Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Python List Files in a Directory: चरण-दर-चरण गाइड

Python os लाइब्रेरी का उपयोग निर्देशिका में फ़ाइलों को सूचीबद्ध करने के लिए किया जाता है। Python os.listdir() मेथड किसी निर्देशिका में हर फ़ाइल और फ़ोल्डर की सूची लौटाता है। os.walk() फ़ंक्शन संपूर्ण फ़ाइल ट्री में हर फ़ाइल की सूची लौटाता है।


अक्सर, जब आप Python में फ़ाइलों के साथ काम कर रहे होते हैं, तो आप उन स्थितियों का सामना करेंगे जहां आप किसी निर्देशिका में फ़ाइलों को सूचीबद्ध करना चाहते हैं। उदाहरण के लिए, आप किसी फ़ोल्डर में सभी Python फ़ाइलों को ढूंढना चाह सकते हैं।

Python os लाइब्रेरी कई मेथड्स प्रदान करती है जिनका उपयोग निर्देशिका में फ़ाइलों को सूचीबद्ध करने के लिए किया जा सकता है। यह ट्यूटोरियल चर्चा करेगा कि निर्देशिका में फ़ाइलों और फ़ोल्डर्स को प्राप्त करने के लिए os.listdir() का उपयोग कैसे करें। हम os.walk() का उपयोग करके निर्देशिका और उसके उपनिर्देशिकाओं में फ़ाइलों और फ़ोल्डर्स को प्राप्त करने के बारे में भी बात करेंगे।

Python os लाइब्रेरी

Python os लाइब्रेरी कई फ़ंक्शन प्रदान करती है जिनका उपयोग ऑपरेटिंग सिस्टम के साथ काम करने के लिए किया जा सकता है। os मॉड्यूल में शामिल फ़ंक्शन किसी भी आधुनिक ऑपरेटिंग सिस्टम पर काम करते हैं, चाहे वह Windows, Linux, या Mac हो।

चूंकि os एक बाहरी लाइब्रेरी है, हमें इसका उपयोग शुरू करने से पहले इसे अपने कोड में आयात करने की आवश्यकता है। हम Python आयात स्टेटमेंट का उपयोग करके ऐसा कर सकते हैं:

import os

अब जब हमने os लाइब्रेरी को अपने कोड में आयात कर लिया है, तो हम निर्देशिका में आइटम सूचीबद्ध करने के लिए इसके फ़ंक्शन का उपयोग करना शुरू कर सकते हैं।

Python os.listdir()

Python में, os.listdir() मेथड दिए गए निर्देशिका में फ़ाइलों और फ़ोल्डर्स को सूचीबद्ध करता है। मेथड '. ' और '.. ' जैसे विशेष एंट्रीज़ को नहीं लौटाता, जिनका उपयोग ऑपरेटिंग सिस्टम विभिन्न निर्देशिकाओं के माध्यम से नेविगेट करने के लिए करता है।

os.listdir() फ़ोल्डर्स के पहले स्तर से आगे फ़ाइलों और फ़ोल्डर्स को भी नहीं लौटाता। दूसरे शब्दों में, os.listdir() मेथड द्वारा खोजे गए उपफ़ोल्डर्स के भीतर कुछ भी नहीं लौटाता।

os.listdir() फ़ंक्शन एक पैरामीटर स्वीकार करता है: उस निर्देशिका का फ़ाइल पथ जिसके फ़ाइल और फ़ोल्डर नाम आप पुनर्प्राप्त करना चाहते हैं।

यहाँ listdir मेथड का सिंटैक्स है:

os.listdir(path)

आइए एक उदाहरण के माध्यम से चलें जो दिखाता है कि इस मेथड को Python प्रोग्राम में कैसे उपयोग किया जाए।

os.listdir() Python उदाहरण

मान लीजिए हम एक प्रोग्राम बना रहे हैं जो पिछले दशक में नेटफ्लिक्स के शेयर बाजार प्रदर्शन का विश्लेषण करता है। हमारे पास एक फ़ोल्डर (नाम: /home/data_analysis/netflix) है जिसमें हमारा सारा कच्चा डेटा है, और हमारे प्रोग्राम के चलने शुरू होने से पहले, हम यह जांचना चाहते हैं कि फ़ाइल raw_data_2019.csv उस फ़ोल्डर के भीतर मौजूद है या नहीं।

ठीक से काम करने के लिए, हमारे प्रोग्राम को उस विशेष फ़ाइल की आवश्यकता होती है जो उस विशेष फ़ोल्डर में संग्रहीत हो।

हम /home/data_analysis/netflix कार्य निर्देशिका में फ़ाइलों की सूची प्राप्त करने के लिए निम्न कोड का उपयोग कर सकते हैं:

import os
path = '/home/data_analysis/netflix'
files = os.listdir(path)
for f in files:
    print(f)

हमारा प्रोग्राम निर्दिष्ट निर्देशिका में सभी फ़ाइलों और फ़ोल्डर्स की सूची पुनर्प्राप्त करता है और निम्नलिखित लौटाता है:

README.md
app.py
raw_data_2016.csv
raw_data_2017.csv
raw_data_2018.csv
raw_data_2019.csv
processed_data

अब, हम जांच सकते हैं कि फ़ाइल raw_data_2019.csv फ़ोल्डर में है या नहीं। जैसा कि आप देख सकते हैं, यह है।

आइए अपने कोड को तोड़ें। पहली पंक्ति पर, हम os मॉड्यूल आयात करते हैं, जिसे हमें os.listdir() फ़ंक्शन तक पहुंचने के लिए करना होगा। फिर, हम path नामक एक Python वेरिएबल घोषित करते हैं, जो उस पथ का नाम संग्रहीत करता है जिसकी सामग्री हम पुनर्प्राप्त करना चाहते हैं।

अगली पंक्ति पर, हम /home/data_analysis/netflix निर्देशिका में फ़ाइलों और फ़ोल्डर्स की सूची प्राप्त करने के लिए os.listdir() मेथड का उपयोग करते हैं। अंत में, हम एक Python फॉर लूप बनाते हैं। यह लूप os.listdir() द्वारा उत्पादित सूची में हर आइटम के माध्यम से पुनरावृति करता है। हम Python print() स्टेटमेंट का उपयोग करके प्रत्येक फ़ाइल का नाम कंसोल पर प्रिंट करते हैं।

/home/data_analysis/netflix निर्देशिका में छह फ़ाइलें और एक निर्देशिका थी। निर्देशिका को processed_data कहा जाता है और यह अन्य फ़ाइलों से अलग है क्योंकि इसका कोई एक्सटेंशन नहीं है।

Python os.walk()

os.walk() फ़ंक्शन एक ट्री के भीतर समाहित फ़ाइलों की सूची पुनर्प्राप्त करता है। मेथड ट्री में प्रत्येक निर्देशिका पर पुनरावृति करता है। फिर, os.walk() एक निर्देशिका और उसके किसी भी उपनिर्देशिका के भीतर हर फ़ाइल और फ़ोल्डर का नाम लौटाता है।

os.walk() मेथड का सिंटैक्स निम्नानुसार है:

os.walk(top, topdown, onerror, followlinks)

os.walk() मेथड चार पैरामीटर स्वीकार करता है:

  • top वह शीर्ष निर्देशिका है जिसके घटक फ़ाइल और फ़ोल्डर नाम आप पुनर्प्राप्त करना चाहते हैं (आवश्यक)
  • topdown, जब True पर सेट होता है, तो निर्दिष्ट करता है कि निर्देशिकाओं को ऊपर से नीचे स्कैन किया जाना चाहिए। यदि यह मान False पर सेट है, तो निर्देशिकाओं को नीचे से ऊपर स्कैन किया जाएगा (वैकल्पिक)
  • onerror त्रुटि होने पर त्रुटि हैंडलर प्रदान करता है (वैकल्पिक)
  • followlinks, यदि True पर सेट है, तो सिस्टम लिंक द्वारा संदर्भित फ़ोल्डर्स पर जाता है (वैकल्पिक)

हम पहले दो पैरामीटर्स पर ध्यान केंद्रित करने जा रहे हैं क्योंकि onerror और followlinks अधिक उन्नत हैं और आमतौर पर कम उपयोग किए जाते हैं।

os.walk() Python उदाहरण

मान लीजिए हम /home/data_analysis/netflix निर्देशिका में सभी फ़ाइलों के नाम पुनर्प्राप्त करना चाहते हैं। हम यह भी जानना चाहते हैं कि उस फ़ोल्डर में उपनिर्देशिकाओं में क्या संलग्न है।

जैसा कि हमने ऊपर चर्चा की, netflix निर्देशिका में एक फ़ोल्डर है: processed_data। हम /home/data_analysis/netflix निर्देशिका और उसके उपनिर्देशिकाओं में सभी फ़ाइलों के नाम पुनर्प्राप्त करने के लिए निम्न कोड का उपयोग कर सकते हैं:

import os
path = '/home/data_analysis/netflix'
for root, directories, files in os.walk(path, topdown=False):
    for name in files:
        print(os.path.join(root, name))
    for name in directories:
        print(os.path.join(root, name))

हमारे कोड का आउटपुट यहाँ है:

/home/data_analysis/netflix/README.md
/home/data_analysis/netflix/app.py
/home/data_analysis/netflix/raw_data_2016.csv
/home/data_analysis/netflix/raw_data_2017.csv
/home/data_analysis/netflix/raw_data_2018.csv
/home/data_analysis/netflix/raw_data_2019.csv
/home/data_analysis/netflix/processed_data
/home/data_analysis/netflix/processed_data/final.csv

हम os मॉड्यूल आयात करते हैं जिससे हम बाद में अपने कोड में os.walk() और os.path.join() मेथड्स को संदर्भित करते हैं। फिर, हम path नामक एक वेरिएबल घोषित करते हैं, जो उस पथ को संग्रहीत करता है जिसके फ़ाइल नाम हम खोजना चाहते हैं।

फिर हम एक for लूप बनाते हैं जो os.walk() का उपयोग करके path निर्देशिका में सभी फ़ाइलों और फ़ोल्डर्स की सूची पुनर्प्राप्त करता है। वह लूप os.walk() द्वारा लौटाई गई फ़ाइलों और फ़ोल्डर्स के माध्यम से पुनरावृति करता है। यह ध्यान देने योग्य है कि हम os.walk() मेथड में topdown=False पैरामीटर निर्दिष्ट करते हैं, जो हमारे कोड को टॉप-डाउन खोज करने के लिए कहता है।

हमारा for लूप os.walk() मेथड द्वारा खोजी गई प्रत्येक फ़ाइल और निर्देशिका के माध्यम से अतिरिक्त for लूप का उपयोग करके पुनरावृति करता है। हम os.walk() में फ़ाइलों को कंसोल पर प्रिंट करते हैं।

हमारे ऊपर के कोड में, यहाँ हमारे for लूप हैं:

for root, directories, files in os.walk(path):
    for name in files:
        print(os.path.join(root, name))
    for name in directories:
        print(os.path.join(root, name))

फिर, हमारा प्रोग्राम प्रत्येक फ़ाइल के रूट फ़ोल्डर (i.e. /home/data_analysis/netflix) और फ़ाइल के नाम (i.e. raw_data_2019.csv) को एक साथ जोड़ने के लिए os.path.join() का उपयोग करता है। रूट फ़ोल्डर उस निर्देशिका पथ को संदर्भित करता है जिसमें एक फ़ाइल मौजूद है।

निष्कर्ष

आप ऐसा करने के लिए Python listdir() मेथड का उपयोग कर सकते हैं। आप walk() मेथड का भी उपयोग कर सकते हैं, जो निर्देशिका में सब कुछ सूचीबद्ध करता है, उपनिर्देशिकाओं के भीतर कुछ भी सहित।

इस गाइड ने उदाहरण प्रदान करते हुए, Python में निर्देशिका में फ़ाइलों और फ़ोल्डर्स को सूचीबद्ध करने के लिए os.listdir() और os.walk() मेथड्स का उपयोग कैसे करें, इसका पता लगाया। अब आपके पास Python में विशेषज्ञ की तरह निर्देशिका में फ़ाइलों को सूचीबद्ध करने का कौशल है!

Python में कोडिंग के बारे में अधिक जानने के लिए, हमारा पूर्ण How to Learn Python गाइड पढ़ें।

  1. - पायथन इनहेरिटेंस: एक चरण-दर-चरण मार्गदर्शिका

    पायथन इनहेरिटेंस तब होता है जब एक सबक्लास दूसरी क्लास के कोड का उपयोग करता है। ऑब्जेक्ट-ओरिएंटेड भाषाओं जैसे पायथन में इनहेरिटेंस एक आवश्यक विशेषता है जो कोडिंग को आसान और अधिक कुशल बनाती है। पायथन इनहेरिटेंस का परिचय पायथन एक ऑब्जेक्ट-ओरिएंटेड भाषा है, जिसका अर्थ है कि यह कोड के पुन: प्रयोज्य ब

  1. - पायथन रिवर्स लिस्ट: एक चरण-दर-चरण ट्यूटोरियल

    आप पायथन में बिल्ट-इन reverse() या reversed() मेथड्स का उपयोग करके एक सूची को उलट सकते हैं। ये मेथड्स एक नई सूची बनाए बिना सूची को उलट देंगे। पायथन reverse() और reversed() मूल सूची ऑब्जेक्ट में तत्वों को उलट देंगे। पायथन सूचियाँ और सूची स्लाइसिंग: एक रिफ्रेशर पायथन में, सूचियाँ आइटम्स की सरणियाँ

  1. पायथन इंटरप्रेटर्स: एक चरण-दर-चरण गाइड पायथन इंटरप्रेटर्स: एक चरण-दर-चरण गाइड

    पायथन प्रोग्राम कैसे एक्जीक्यूट होता है? पायथन, जावा की तरह, पूरी तरह से इंटरप्रेटेड भाषा के रूप में वर्गीकृत नहीं किया जा सकता और न ही कंपाइल्ड भाषा के रूप में। यह दोनों का थोड़ा सा है। कंपाइल्ड होने का मतलब इस उदाहरण में है किसी प्लेटफॉर्म पर निर्भर न करने वाली निचले स्तर की भाषा में अनुवादित होन