पायथन में फ़ाइल और निर्देशिका नामों की एक सूची प्राप्त करें।

व्यापार

पायथन में फ़ाइल और निर्देशिका नामों (फ़ोल्डर नाम) की सूची प्राप्त करने के लिए, ओएस मॉड्यूल फ़ंक्शन os.listdir() का उपयोग करें।

os.listdir(path=’.’)
पथ द्वारा निर्दिष्ट निर्देशिका में प्रविष्टि नामों वाली एक सूची देता है।
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

ओएस मॉड्यूल मानक पुस्तकालय में शामिल है और इसे स्थापित करने की आवश्यकता नहीं है। हालांकि, “आयात” की आवश्यकता है।

निम्नलिखित जानकारी यहाँ प्रदान की गई है।

  • फ़ाइल और निर्देशिका दोनों नामों की सूची प्राप्त करें।
  • केवल फ़ाइल नामों की सूची प्राप्त करें
  • केवल निर्देशिका नामों की सूची प्राप्त करें

निम्नलिखित एक फ़ाइल (निर्देशिका) संरचना का एक उदाहरण है।

.
└── testdir
    ├── dir1
    ├── dir2
    ├── file1
    ├── file2.txt
    └── file3.jpg

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

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

फ़ाइल और निर्देशिका दोनों नामों की सूची प्राप्त करें।

यदि आप os.listdir() का उपयोग करते हैं, तो यह फ़ाइल और निर्देशिका दोनों नामों की एक सूची लौटाएगा।

import os

path = "./testdir"

files = os.listdir(path)
print(type(files))  # <class 'list'>
print(files)        # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']

आपको जो मिलता है वह पथ तारों की एक सूची है।

केवल फ़ाइल नामों की सूची प्राप्त करें

यदि आप केवल फ़ाइल नामों की सूची प्राप्त करना चाहते हैं, तो पथ एक फ़ाइल है या नहीं यह निर्धारित करने के लिए os.path.isfile() फ़ंक्शन का उपयोग करें। os.path.isfile() फ़ंक्शन के तर्क के रूप में केवल फ़ाइल नाम पास करने से काम नहीं चलेगा, इसलिए नीचे दिखाए अनुसार पूरा पथ पास करें।
os.path.isfile(os.path.join(path, f))

files = os.listdir(path)
files_file = [f for f in files if os.path.isfile(os.path.join(path, f))]
print(files_file)   # ['file1', 'file2.txt', 'file3.jpg']

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

यदि आप केवल निर्देशिका नामों की सूची प्राप्त करना चाहते हैं, तो उसी तरह os.path.isdir() का उपयोग करें।

files = os.listdir(path)
files_dir = [f for f in files if os.path.isdir(os.path.join(path, f))]
print(files_dir)    # ['dir1', 'dir2']