কম্পিউটার

পাইথনে ইউনিক্স ফাইলের নাম প্যাটার্ন মিলছে (fnmatch)


ইউনিক্স শেল কমান্ড লাইনে ব্যবহৃত ওয়াইল্ডকার্ড প্যাটার্নগুলি রেগুলার এক্সপ্রেশন সিনট্যাক্স থেকে আলাদা। পাইথনের স্ট্যান্ডার্ড লাইব্রেরিতে, fnmatch মডিউল ইউনিক্স ওয়াইল্ড কার্ড প্যাটার্ন প্রদান করে।

নিম্নলিখিত ফাংশন fnmatch মডিউলে সংজ্ঞায়িত করা হয়েছে

fnmatch()

এই ফাংশনের দুটি প্যারামিটার প্রয়োজন - ফাইলের নাম এবং অক্ষরের স্ট্রিং প্যাটার্ন। ফাইলের নাম প্রদত্ত প্যাটার্নের সাথে মিলে যায় এবং ফাংশন সত্য বা মিথ্যা রিটার্ন করে।

নিম্নলিখিত উদাহরণে বর্তমান ডিরেক্টরি থেকে প্যাটার্ন "*.py" এর সাথে মেলে এমন সমস্ত ফাইলের তালিকা করা হয়েছে৷

>>> glob,fnmatch>>> ফাইলের জন্য (glob.glob('*.*')):if (fnmatch.fnmatch(ফাইল, "*.py")):মুদ্রণ (ফাইল) 

fnmatchcase()

এই ফাংশনটি fnmatch() এর অনুরূপ। তবে এই ফাংশনটি ফাইলের নামের সাথে প্যাটারের কেস সংবেদনশীল ম্যাচিং সম্পাদন করে।

নিম্নলিখিত উদাহরণে, 'l' এবং '.py' এক্সটেনশন দিয়ে শুরু হওয়া নামের সমস্ত ফাইল প্রথমে একটি ফাইল তালিকা বস্তুতে সংগ্রহ করা হয়। fnmatch() ফাংশনটি শুধুমাত্র 'lo' অক্ষর দিয়ে শুরু হওয়া নামগুলি প্রিন্ট করতে প্রয়োগ করা হয়।

>>> files=glob.glob("l*.*")>>> ফাইল['LICENSE.txt', 'lines.txt', 'listwidget.ui', 'lo1.ui', 'lo2 .ui', 'lo3.ui', 'logo.png', 'logo.svg', 'lw.ui']>>> ফাইলে ফাইলের জন্য:যদি fnmatch.fnmatchcase(file,"lo*.*") ==সত্য:প্রিন্ট (ফাইল)lo1.uilo2.uilo3.uilogo.pnglogo.svg

ফিল্টার()

এই ফাংশনটি শুধুমাত্র সেই ফাইলগুলিকে ফেরত দেয় যাদের নাম প্রদত্ত প্যাটার্ন প্যারামিটারের সাথে মেলে৷

নিম্নলিখিত বিবৃতি বর্তমান ডিরেক্টরির সমস্ত ফাইলের মধ্যে '.txt' এক্সটেনশন সহ ফাইলগুলির তালিকা প্রদান করে৷

>>> fnmatch.filter(files,"*.txt")['a!.txt', 'data().txt', 'dict.txt', 'json.txt', 'LICENSE.txt' ', 'lines.txt', 'msg.txt', 'NEWS.txt', 'test.txt', 'zen.txt', 'zen1.txt', 'zenbak.txt']

অনুবাদ()

এই ফাংশনটি UNIX শৈলী প্যাটার্নকে সংশ্লিষ্ট RegEx ফর্মে রূপান্তর করতে উপযোগী। re মডিউলের compile() ফাংশন ব্যবহার করে translate() ফাংশনের রিটার্ন মান রেগুলার এক্সপ্রেশনে রূপান্তর করা উচিত। এটি তখন প্যাটার্ন মেলানোর জন্য ব্যবহৃত হয়।

>>> pattern="*.txt">>> import re>>> reg=fnmatch.translate(pattern)>>> reg'(?s:.*\\.txt)\\Z'>>> rec=re.compile(reg)>>> glob.glob("*.*") এ ফাইলের জন্য:যদি re.match(rec,file):প্রিন্ট (ফাইল)

এই নিবন্ধে fnmatch মডিউলের ফাংশন ব্যাখ্যা করা হয়েছে।


  1. পাইথনে প্যাটার্ন কিভাবে প্রিন্ট করবেন?

  2. পাইথনে Phyllotaxis প্যাটার্ন?

  3. পাইথন ব্যবহার করে একটি নতুন ফাইলে দুটি ফাইল কীভাবে সংযুক্ত করবেন?

  4. পাইথন ব্যবহার করে একটি নতুন ফাইলে একাধিক ফাইল কীভাবে মার্জ করবেন?