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

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

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

fnmatch मॉड्यूल में निम्न फ़ंक्शन्स परिभाषित हैं:

fnmatch()

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

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

>>> import glob, fnmatch
>>> for files in (glob.glob('*.*')):
...     if (fnmatch.fnmatch(files, "*.py")):
...         print(files)

fnmatchcase()

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

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

>>> 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

filter()

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

निम्न स्टेटमेंट करंट डायरेक्टरी में सभी फ़ाइलों में से '.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']

translate()

यह फ़ंक्शन UNIX स्टाइल पैटर्न को संबंधित RegEx फॉर्म में बदलने के लिए उपयोगी है। translate() फ़ंक्शन का रिटर्न मान re मॉड्यूल के compile() फ़ंक्शन का उपयोग करके रेगुलर एक्सप्रेशन में बदला जाना चाहिए। इसका उपयोग फिर पैटर्न मिलान के लिए किया जाता है।

>>> 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: for fname in filenames: with open(fname) as infile: