Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में यूनिक्स फ़ाइल नाम पैटर्न मिलान (fnmatch)

यूनिक्स शेल कमांड लाइन में प्रयुक्त वाइल्डकार्ड पैटर्न रेगुलर एक्सप्रेशन सिंटैक्स से भिन्न होते हैं। पायथन के मानक पुस्तकालय में, fnmatch मॉड्यूल यूनिक्स वाइल्ड कार्ड पैटर्न प्रदान करता है।

निम्नलिखित कार्यों को fnmatch मॉड्यूल में परिभाषित किया गया है

fnmatch()

इस फ़ंक्शन को दो मापदंडों की आवश्यकता होती है - फ़ाइल का नाम और वर्णों का स्ट्रिंग पैटर्न। फ़ाइल का नाम दिए गए पैटर्न से मेल खाता है और फ़ंक्शन सही या गलत लौटाता है।

निम्नलिखित उदाहरण उन सभी फाइलों को सूचीबद्ध करता है जो वर्तमान निर्देशिका से पैटर्न "*.py" से मेल खाते हैं।

(glob.glob('*.*')) में फाइलों के लिए
>>> import glob,fnmatch
>>> for files in (glob.glob('*.*')):
if (fnmatch.fnmatch(files, "*.py")):
print (files)

fnmatchcase()

यह फ़ंक्शन fnmatch() के समान है। हालाँकि यह फ़ंक्शन फ़ाइल नाम के साथ पैटर्स का केस संवेदी मिलान करता है।

निम्नलिखित उदाहरण में, 'l' और '.py' एक्सटेंशन से शुरू होने वाले नाम वाली सभी फाइलें पहले फाइल सूची ऑब्जेक्ट में एकत्र की जाती हैं। fnmatch() फ़ंक्शन केवल 'लो' वर्णों से शुरू होने वाले नामों को प्रिंट करने के लिए लागू किया जाता है।

>>> files=glob.glob("l*.*")
>>> files
['LICENSE.txt', 'lines.txt', 'listwidget.ui', 'lo1.ui', 'lo2.ui', 'lo3.ui', 'logo.png', 'logo.svg', 'lw.ui']
>>> for file in files:
if fnmatch.fnmatchcase(file,"lo*.*")==True:
print (file)
lo1.ui
lo2.ui
lo3.ui
logo.png
logo.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 रूप में बदलने के लिए उपयोगी है। ट्रांसलेशन () फंक्शन के रिटर्न वैल्यू को री मॉड्यूल के कंपाइल () फंक्शन का उपयोग करके रेगुलर एक्सप्रेशन में बदलना चाहिए। इसके बाद पैटर्न से मिलान करने के लिए इसका उपयोग किया जाता है।

>>> pattern="*.txt"
>>> import re
>>> reg=fnmatch.translate(pattern)
>>> reg
'(?s:.*\\.txt)\\Z'
>>> rec=re.compile(reg)
>>> for file in glob.glob("*.*"):
if re.match(rec,file):
print (file)

इस लेख में fnmatch मॉड्यूल में कार्यों के बारे में बताया गया है।


  1. पायथन में पैटर्न कैसे प्रिंट करें?

    नेस्टेड फॉर लूप्स का उपयोग करके पायथन में पैटर्न मुद्रित किए जा सकते हैं। बाहरी लूप का उपयोग पंक्तियों की संख्या के माध्यम से पुनरावृति करने के लिए किया जाता है जबकि आंतरिक लूप का उपयोग स्तंभों की संख्या को संभालने के लिए किया जाता है। आवश्यकता के अनुसार विभिन्न पैटर्न बनाने के लिए प्रिंट स्टेटमेंट

  1. पायथन में फाइलोटैक्सिस पैटर्न?

    फाइलोटैक्सिस पैटर्न क्या है? जब हम वापस जाते हैं, तो हमारे वनस्पति विज्ञान वर्गों और पौधों की दुनिया में, फ़ाइलोटैक्सिस का अर्थ है पौधों के तने पर फूलों, पत्तियों या बीजों की व्यवस्था, जैसा कि फाइबोनैचि सर्पिल में पाया जाता है। फाइबोनैचि अनुक्रम के आधार पर, फाइबोनैचि सर्पिल संख्याओं का एक समूह है ज

  1. पायथन का उपयोग करके एक से अधिक फ़ाइलों को एक नई फ़ाइल में कैसे मर्ज करें?

    एक नई फ़ाइल में एकाधिक फ़ाइलों को मर्ज करने के लिए, आप बस फ़ाइलों को पढ़ सकते हैं और उन्हें लूप का उपयोग करके एक नई फ़ाइल में लिख सकते हैं। उदाहरण के लिए filenames = ['file1.txt', 'file2.txt', 'file3.txt'] with open('output_file', 'w') as outfile: