পাইথন: একটি ডিরেক্টরি থেকে একটি তালিকায় সমস্ত ফাইল তালিকাভুক্ত করা এবং যুক্ত করা

পাইথন: একটি ডিরেক্টরি থেকে একটি তালিকায় সমস্ত ফাইল তালিকাভুক্ত করা এবং যুক্ত করা
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)

পাইথনের পাথলিব মডিউল ব্যবহার করে ডিরেক্টরি বিষয়বস্তু আনা হচ্ছে

ফাইল তালিকার জন্য pathlib মডিউল ব্যবহার করা হচ্ছে

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 সহ পুনরাবৃত্ত ফাইল তালিকা

পুনরাবৃত্ত ডিরেক্টরি ট্রাভার্সালের জন্য 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. প্রতিটি পদ্ধতির নিজস্ব সুবিধা রয়েছে, এটি বিভিন্ন ব্যবহারের ক্ষেত্রে উপযুক্ত করে তোলে। এই কৌশলগুলি বোঝা আপনার ফাইল পরিচালনার কাজগুলি দক্ষতার সাথে পরিচালনা করার ক্ষমতা বাড়ায়, এটি নিশ্চিত করে যে আপনি আপনার অ্যাপ্লিকেশনের প্রয়োজন অনুসারে ফাইলগুলিকে সঠিকভাবে তালিকাভুক্ত করতে এবং প্রক্রিয়া করতে পারেন।