पायथन: एक निर्देशिका से सभी फाइलों को सूचीबद्ध करना और एक सूची में जोड़ना

पायथन: एक निर्देशिका से सभी फाइलों को सूचीबद्ध करना और एक सूची में जोड़ना
Python

पायथन में फ़ाइल प्रबंधन की खोज

प्रोग्रामिंग में निर्देशिकाओं और फ़ाइलों के साथ काम करना एक सामान्य कार्य है। पायथन में, एक निर्देशिका के भीतर सभी फ़ाइलों को सूचीबद्ध करने और आगे की प्रक्रिया के लिए उन्हें एक सूची में संग्रहीत करने की कई विधियाँ हैं।

यह आलेख कोड उदाहरण और स्पष्टीकरण प्रदान करते हुए, इसे प्राप्त करने के कुशल तरीकों का पता लगाएगा। चाहे आप शुरुआती हों या अनुभवी प्रोग्रामर, ये तकनीकें पायथन में आपके फ़ाइल प्रबंधन कार्यों को सुव्यवस्थित करने में मदद करेंगी।

आज्ञा विवरण
os.listdir(directory) निर्दिष्ट निर्देशिका में प्रविष्टियों के नाम वाली एक सूची लौटाता है।
os.path.isfile(path) जाँचता है कि निर्दिष्ट पथ एक मौजूदा नियमित फ़ाइल है या नहीं।
os.path.join(path, *paths) एक या अधिक पथ घटकों को बुद्धिमानी से जोड़ता है, एक ही पथ लौटाता है।
Path(directory).iterdir() निर्दिष्ट निर्देशिका में सभी फ़ाइलों और उप-निर्देशिकाओं का एक पुनरावर्तक लौटाता है।
file.is_file() यदि पथ एक नियमित फ़ाइल या किसी फ़ाइल का प्रतीकात्मक लिंक है तो सत्य लौटाता है।
os.walk(directory) ऊपर से नीचे या नीचे से ऊपर चलते हुए, निर्देशिका ट्री में फ़ाइल नाम उत्पन्न करता है।

पायथन डायरेक्ट्री ट्रैवर्सल को समझना

ऊपर दी गई स्क्रिप्ट पायथन का उपयोग करके एक निर्देशिका में सभी फ़ाइलों को सूचीबद्ध करने के विभिन्न तरीकों को दर्शाती है। पहली स्क्रिप्ट का उपयोग करता है os मॉड्यूल, जो पायथन में एक अंतर्निहित मॉड्यूल है जो ऑपरेटिंग सिस्टम-निर्भर कार्यक्षमता का उपयोग करने का एक तरीका प्रदान करता है। का उपयोग करके os.listdir(directory), हम निर्दिष्ट निर्देशिका में सभी प्रविष्टियों की एक सूची प्राप्त कर सकते हैं। फिर, इन प्रविष्टियों को दोहराकर और प्रत्येक की जाँच करके os.path.isfile(path), हम निर्देशिकाओं को फ़िल्टर कर सकते हैं और केवल फ़ाइलों को अपनी सूची में जोड़ सकते हैं। दूसरी लिपि का उपयोग किया जाता है pathlib मॉड्यूल, जो फ़ाइल सिस्टम पथों के लिए अधिक ऑब्जेक्ट-ओरिएंटेड दृष्टिकोण प्रदान करता है। का उपयोग करके Path(directory).iterdir(), हमें निर्देशिका में सभी प्रविष्टियों का एक पुनरावर्तक मिलता है, और इन्हें फ़िल्टर करके file.is_file(), हम केवल फ़ाइलें एकत्र कर सकते हैं।

तीसरी स्क्रिप्ट अधिक व्यापक फ़ाइल सूचीकरण के लिए डिज़ाइन की गई है, जिसमें उपनिर्देशिकाओं में फ़ाइलें भी शामिल हैं। यह उपयोगकर्ता है os.walk(directory), एक जनरेटर जो निर्दिष्ट निर्देशिका में निहित पेड़ में प्रत्येक निर्देशिका के लिए निर्देशिका पथ, उपनिर्देशिका और फ़ाइल नामों का एक टुपल उत्पन्न करता है। यह हमें निर्देशिका ट्री को पुनरावर्ती रूप से पार करने और सभी फ़ाइल नामों को इकट्ठा करने की अनुमति देता है। ये स्क्रिप्ट्स पायथन में डायरेक्टरी ट्रैवर्सल को संभालने के कुशल तरीके प्रदर्शित करती हैं, जो सरलता दोनों प्रदान करती हैं os और इसके साथ बढ़ी हुई कार्यक्षमता pathlib. फ़ाइल प्रबंधन कार्यों के लिए इन आदेशों और विधियों को समझना महत्वपूर्ण है, यह सुनिश्चित करना कि फ़ाइलों को निर्देशिका संरचना के भीतर सही ढंग से पहचाना और संसाधित किया गया है।

पायथन के ओएस मॉड्यूल का उपयोग करके निर्देशिका में फ़ाइलों को सूचीबद्ध करना

डायरेक्टरी ट्रैवर्सल के लिए ओएस मॉड्यूल का उपयोग करना

import os

def list_files_os(directory):
    files = []
    for filename in os.listdir(directory):
        if os.path.isfile(os.path.join(directory, filename)):
            files.append(filename)
    return files

# Example usage
directory_path = '/path/to/directory'
files_list = list_files_os(directory_path)
print(files_list)

पायथन के पाथलिब मॉड्यूल का उपयोग करके निर्देशिका सामग्री प्राप्त करना

फ़ाइल सूचीकरण के लिए पाथलिब मॉड्यूल का उपयोग करना

from pathlib import Path

def list_files_pathlib(directory):
    return [str(file) for file in Path(directory).iterdir() if file.is_file()]

# Example usage
directory_path = '/path/to/directory'
files_list = list_files_pathlib(directory_path)
print(files_list)

ओएस.वॉक के साथ पुनरावर्ती फ़ाइल सूचीकरण

पुनरावर्ती निर्देशिका ट्रैवर्सल के लिए os.walk का उपयोग करना

import os

def list_files_recursive(directory):
    files = []
    for dirpath, _, filenames in os.walk(directory):
        for filename in filenames:
            files.append(os.path.join(dirpath, filename))
    return files

# Example usage
directory_path = '/path/to/directory'
files_list = list_files_recursive(directory_path)
print(files_list)

पायथन में उन्नत फ़ाइल लिस्टिंग तकनीकें

का उपयोग करके किसी निर्देशिका में फ़ाइलों को सूचीबद्ध करने की बुनियादी विधियों से परे os और pathlib मॉड्यूल, अधिक उन्नत तकनीकें हैं जिनका उपयोग विशेष कार्यों के लिए किया जा सकता है। ऐसी ही एक विधि का उपयोग किया जा रहा है glob मॉड्यूल, जो यूनिक्स शेल द्वारा उपयोग किए गए नियमों के अनुसार एक निर्दिष्ट पैटर्न से मेल खाने वाले सभी पथनाम ढूंढता है। यह विशिष्ट एक्सटेंशन या पैटर्न वाली फ़ाइलों को सूचीबद्ध करने के लिए विशेष रूप से उपयोगी हो सकता है। उदाहरण के लिए, का उपयोग करना glob.glob('*.txt') वर्तमान निर्देशिका में सभी टेक्स्ट फ़ाइलों को सूचीबद्ध करेगा। यह विधि निर्देशिका प्रविष्टियों के माध्यम से मैन्युअल रूप से पुनरावृत्त किए बिना फ़ाइलों को उनके नाम या एक्सटेंशन के आधार पर फ़िल्टर करने का एक लचीला तरीका प्रदान करती है।

एक और उन्नत तकनीक का लाभ उठाना है fnmatch मॉड्यूल, जो यूनिक्स-शैली ग्लोब पैटर्न के विरुद्ध फ़ाइल नामों की तुलना करने के लिए फ़ंक्शन प्रदान करता है। इसका उपयोग इसके साथ मिलकर किया जा सकता है os.listdir() या pathlib अधिक जटिल पैटर्न के आधार पर फ़ाइलों को फ़िल्टर करने के लिए। उदाहरण के लिए, fnmatch.filter(os.listdir(directory), '*.py') निर्दिष्ट निर्देशिका में सभी पायथन फ़ाइलों की एक सूची लौटाएगा। इसके अतिरिक्त, बड़े डेटासेट या प्रदर्शन-महत्वपूर्ण अनुप्रयोगों के लिए, का उपयोग करना scandir से os मॉड्यूल से अधिक कुशल हो सकता है listdir क्योंकि यह फ़ाइल नामों के साथ-साथ फ़ाइल विशेषताओं को पुनः प्राप्त करता है, जिससे सिस्टम कॉल की संख्या कम हो जाती है। इन उन्नत तकनीकों को समझने से पायथन में अधिक शक्तिशाली और लचीले फ़ाइल प्रबंधन समाधान की अनुमति मिलती है।

पायथन में डायरेक्टरी लिस्टिंग के बारे में अक्सर पूछे जाने वाले प्रश्न

  1. मैं किसी निर्देशिका और उसकी उपनिर्देशिकाओं की सभी फ़ाइलों को कैसे सूचीबद्ध करूँ?
  2. उपयोग os.walk(directory) निर्देशिका ट्री को पार करने और सभी फ़ाइलों को सूचीबद्ध करने के लिए।
  3. मैं किसी विशिष्ट एक्सटेंशन वाली फ़ाइलों को कैसे सूचीबद्ध कर सकता हूँ?
  4. उपयोग glob.glob('*.extension') या fnmatch.filter(os.listdir(directory), '*.extension').
  5. के बीच क्या अंतर है os.listdir() और os.scandir()?
  6. os.scandir() यह अधिक कुशल है क्योंकि यह फ़ाइल नामों के साथ-साथ फ़ाइल विशेषताएँ भी पुनः प्राप्त करता है।
  7. क्या मैं किसी निर्देशिका में छिपी हुई फ़ाइलों को सूचीबद्ध कर सकता हूँ?
  8. हाँ, उपयोग कर रहा हूँ os.listdir() छिपी हुई फ़ाइलों (जो एक बिंदु से शुरू होती हैं) को सूचीबद्ध करेगा।
  9. मैं निर्देशिकाओं को सूची से कैसे बाहर करूँ?
  10. उपयोग os.path.isfile() या file.is_file() साथ pathlib केवल फ़ाइलों को फ़िल्टर करने के लिए.
  11. क्या फ़ाइलों की सूची को क्रमबद्ध करना संभव है?
  12. हाँ, आप इसका उपयोग कर सकते हैं sorted() फ़ाइलों की सूची पर कार्य करें।
  13. मैं बड़ी निर्देशिकाओं को कुशलतापूर्वक कैसे संभाल सकता हूँ?
  14. उपयोग os.scandir() बड़ी निर्देशिकाओं के साथ बेहतर प्रदर्शन के लिए।
  15. क्या मुझे फ़ाइल का आकार और संशोधन तिथि मिल सकती है?
  16. हाँ, प्रयोग करें os.stat() या Path(file).stat() फ़ाइल मेटाडेटा पुनः प्राप्त करने के लिए।
  17. क्रॉस-प्लेटफ़ॉर्म संगतता के लिए कौन से मॉड्यूल सर्वोत्तम हैं?
  18. pathlib बेहतर क्रॉस-प्लेटफ़ॉर्म अनुकूलता के लिए मॉड्यूल की अनुशंसा की जाती है।
  19. मैं केवल निर्देशिकाएँ कैसे सूचीबद्ध करूँ?
  20. उपयोग os.path.isdir() या Path(file).is_dir() निर्देशिकाओं को फ़िल्टर करने के लिए.

पायथन में निर्देशिका सूची को समाप्त करना

अंत में, पायथन एक निर्देशिका के भीतर फ़ाइलों को सूचीबद्ध करने के लिए बुनियादी तरीकों से लेकर कई तरीके प्रदान करता है os और pathlib मॉड्यूल से लेकर अधिक उन्नत तकनीकें शामिल हैं glob और fnmatch. प्रत्येक विधि के अपने फायदे हैं, जो इसे विभिन्न उपयोग के मामलों के लिए उपयुक्त बनाते हैं। इन तकनीकों को समझने से फ़ाइल प्रबंधन कार्यों को कुशलतापूर्वक संभालने की आपकी क्षमता बढ़ती है, जिससे यह सुनिश्चित होता है कि आप अपने एप्लिकेशन की आवश्यकता के अनुसार फ़ाइलों को सटीक रूप से सूचीबद्ध और संसाधित कर सकते हैं।