পাইথনে ফাইল এবং ডিরেক্টরির নামের একটি তালিকা পান।

ব্যবসায়

পাইথনে ফাইল এবং ডিরেক্টরির নামের (ফোল্ডারের নাম) একটি তালিকা পেতে, os মডিউল ফাংশন 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() ছাড়াও, আপনি ফাইল এবং ডিরেক্টরির নাম (ফোল্ডারের নাম) তালিকা পেতে গ্লোব মডিউল ব্যবহার করতে পারেন। গ্লোব আপনাকে ওয়াইল্ডকার্ড (*) ইত্যাদি ব্যবহার করে শর্তগুলি নির্দিষ্ট করতে দেয় এবং সাবডিরেক্টরিগুলি পুনরাবৃত্তভাবে অন্তর্ভুক্ত করে।

Python 3.4 এবং পরবর্তীতে, pathlib মডিউল ব্যবহার করে ফাইল এবং ডিরেক্টরিগুলির একটি তালিকা পাওয়াও সম্ভব, যা অবজেক্ট হিসাবে পাথগুলিকে ম্যানিপুলেট করতে পারে। উপরের গ্লোবগুলির মতো, এটি শর্তসাপেক্ষে এবং পুনরাবৃত্তিমূলকভাবে ব্যবহার করা যেতে পারে।

ফাইল এবং ডিরেক্টরি উভয় নামের একটি তালিকা পান।

আপনি যদি 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']