यूनिक्स शेल कमांड लाइन में प्रयुक्त वाइल्डकार्ड पैटर्न रेगुलर एक्सप्रेशन सिंटैक्स से भिन्न होते हैं। पायथन के मानक पुस्तकालय में, 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 मॉड्यूल में कार्यों के बारे में बताया गया है।