পাইথন os লাইব্রেরি একটি ডিরেক্টরির ফাইল লিস্ট করতে ব্যবহৃত হয়। পাইথন os.listdir() মেথড একটি ডিরেক্টরির প্রতিটি ফাইল এবং ফোল্ডারের একটি তালিকা ফেরত দেয়। os.walk() ফাংশন একটি পুরো ফাইল ট্রির প্রতিটি ফাইলের একটি তালিকা ফেরত দেয়।
প্রায়শই, পাইথনে ফাইল নিয়ে কাজ করার সময়, আপনি এমন পরিস্থিতি सामने করবেন যেখানে আপনি একটি ডিরেক্টরির ফাইল লিস্ট করতে চাবেন। উদাহরণস্বরূপ, আপনি একটি ফোল্ডারের সকল পাইথন ফাইল খুঁজে বের করতে চান।
পাইথন os লাইব্রেরি অনেক মেথড অফার করে যেগুলো একটি ডিরেক্টরির ফাইল লিস্ট করতে ব্যবহার করা যায়। এই টিউটোরিয়ালে os.listdir() ব্যবহার করে একটি ডিরেক্টরির ফাইল এবং ফোল্ডার পাওয়ার পদ্ধতি আলোচনা করব। আমরা os.walk() ব্যবহার করে একটি ডিরেক্টরির ও এর সাবডিরেক্টরির ফাইল এবং ফোল্ডার পাওয়ার পদ্ধতিও আলোচনা করব।
পাইথন os লাইব্রেরি
পাইথন os লাইব্রেরি অনেক ফাংশন প্রদান করে যেগুলো আপনি অপারেটিং সিস্টেম নিয়ে কাজ করতে ব্যবহার করতে পারেন। os মডিউলে অন্তর্ভুক্ত ফাংশনগুলো যেকোনো আধুনিক অপারেটিং সিস্টেমে কাজ করে, চায় সেটি উইন্ডোজ, লিনাক্স, বা ম্যাক হোক।
যেহেতু os একটি এক্সটার্নাল লাইব্রেরি, আমাদের কোডে এটি ব্যবহার শুরু করার আগে আমাদের কোডে ইম্পোর্ট করতে হবে। আমরা একটি পাইথন ইম্পোর্ট স্টেটমেন্ট ব্যবহার করে সেটি করতে পারি:
import os
এখন যেহেতু আমরা os লাইব্রেরি আমাদের কোডে ইম্পোর্ট করেছি, আমরা এর ফাংশনগুলো ব্যবহার করে একটি ডিরেক্টরির আইটেম লিস্ট করা শুরু করতে পারি।
পাইথন os.listdir()
পাইথনে, os.listdir() মেথড একটি দেওয়া ডিরেক্টরির ফাইল এবং ফোল্ডার লিস্ট করে। এই মেথড '. ' এবং '.. ' মতো স্পেশাল এন্ট্রি ফেরত দেয় না, যা অপারেটিং সিস্টেম বিভিন্ন ডিরেক্টরির মধ্যে নেভিগেট করতে ব্যবহার করে।
os.listdir() প্রথম লেভেল ফোল্ডারের ব أبعدে ফাইল এবং ফোল্ডার ফেরত দেয় না। অন্য কথায়, os.listdir() মেথড দ্বারা আবিষ্কৃত সাবফোল্ডারের ভিতরে কিছুও ফেরত দেয় না।
os.listdir() ফাংশন একটি প্যারামিটার গ্রহণ করে: যে ডিরেক্টরির ফাইল এবং ফোল্ডার নাম আপনি বের করতে চান তার ফাইল পাথ।
listdir মেথডের সিনট্যাক্স:
os.listdir(path)
এই মেথডটি পাইথন প্রোগ্রামে কীভাবে ব্যবহার করবেন তা প্রদর্শন করার জন্য একটি উদাহরণের মাধ্যমে যাই।
os.listdir() পাইথন উদাহরণ
মান লেন আমরা একটি প্রোগ্রাম তৈরি করছি যা গত দশকের নেটফ্লিক্সের শেয়ার বাজারের পারফরম্যান্স বিশ্লেষণ করে। আমাদের কাছে একটি ফোল্ডার রয়েছে (নাম: /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 নামে একটি পাইথন ভেরিয়েবল ঘোষণা করি, যা সেই পাথের নাম সংরক্ষণ করে যাদের কন্টেন্ট আমরা বের করতে চাই।
পরবর্তী লাইনে, আমরা os.listdir() মেথড ব্যবহার করি /home/data_analysis/netflix ডিরেক্টরির ফাইল এবং ফোল্ডারের তালিকা পেতে। শেষে, আমরা একটি পাইথন for লুপ তৈরি করি। এই লুপ os.listdir() দ্বারা তৈরি তালিকার প্রতিটি আইটেমের মধ্য দিয়ে ইটেরেট করে। আমরা প্রতিটি ফাইলের নাম কনসোলে পাইথন print() স্টেটমেন্ট ব্যবহার করে প্রিন্ট করি।
/home/data_analysis/netflix ডিরেক্টরিতে ছয়টি ফাইল এবং একটি ডিরেক্টরি রয়েছে। ডিরেক্টরিটি processed_data নামে ডistingুইশ করা যায় কারণ এর কোনো এক্সটেনশন নেই।
পাইথন 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() পাইথন উদাহরণ
মান লেন আমরা /home/data_analysis/netflix ডিরেক্টরির সকল ফাইলের নাম বের করতে চাই। আমরা সেই ফোল্ডারের সকল সাবডিরেক্টরির ভিতরে কী আছে তা জানতে চাই।
যে desarrollar আলোচনা করেছি, 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))
তারপর, আমাদের প্রোগ্রাম os.path.join() ব্যবহার করে প্রতিটি ফাইলের রুট ফোল্ডার (i.e. /home/data_analysis/netflix) এবং ফাইলের নাম (i.e. raw_datra_2019.csv) একসাথে জোড়া দেয়। রুট ফোল্ডার হলো সেই ডিরেক্টরি পাথ যেখানে একটি ফাইল এক্সিস্ট করে।
উপসংহার
আপনি পাইথন listdir() মেথড ব্যবহার করে এটি করতে পারেন। আপনি walk() মেথডও ব্যবহার করতে পারেন, যা একটি ডিরেক্টরির সবকিছু লিস্ট করে, সহিত সাবডিরেক্টরির ভিতরে যেকোনো কিছু।
এই গাইডে, উদাহরণ সহ, os.listdir() ও os.walk() মেথড ব্যবহার করে পাইথনে একটি ডিরেক্টরির ফাইল এবং ফোল্ডার লিস্ট করার পদ্ধতি অন্বেষণ করা হয়েছে। এখন আপনার কাছে পাইথনে একজন এক্সপার্টের মতো ডিরেক্টরির ফাইল লিস্ট করার স্কিল আছে!
পাইথনে কোডিং সম্পর্কে আরও জানতে, আমাদের পূর্ণ How to Learn Python গাইড পড়ুন।