यहां हम देखेंगे कि हम पायथन का उपयोग करके यूनिक्स शैल शैली पैटर्न मिलान तकनीक कैसे प्राप्त कर सकते हैं। fnmatch . नामक एक मॉड्यूल है , जो काम करने के लिए प्रयोग किया जाता है। इस मॉड्यूल का उपयोग फ़ाइल नाम की किसी पैटर्न से तुलना करने के लिए किया जाता है, फिर मिलान के अनुसार सही या गलत लौटाता है।
इसका उपयोग करने के लिए सबसे पहले हमें इसे fnmatch . आयात करना होगा मानक पुस्तकालय मॉड्यूल।
fnmatch आयात करें
यूनिक्स टर्मिनल में, पैटर्न से मेल खाने के लिए कुछ वाइल्डकार्ड हैं। ये नीचे की तरह हैं -
- ‘*’ तारक का प्रयोग हर चीज से मेल खाने के लिए किया जाता है।
- '?' प्रश्न चिह्न एकल वर्ण के मिलान के लिए है।
- [seq] वर्णों का क्रम से मिलान करने के लिए अनुक्रमों का उपयोग किया जाता है
- [!seq] नॉट इन सीक्वेंस का उपयोग उन वर्णों से मिलान करने के लिए किया जाता है जो अनुक्रम में मौजूद नहीं हैं।
यदि हम वर्ण के रूप में तारांकन या प्रश्न चिह्न खोजना चाहते हैं, तो हमें उनका उपयोग इस तरह करना होगा:[*] या [?]
fnmatch()विधि
fnmatch() विधि दो तर्क लेती है, ये फ़ाइल नाम और पैटर्न हैं। इस फ़ंक्शन का उपयोग यह जांचने के लिए किया जाता है कि फ़ाइल नाम दिए गए पैटर्न से मेल खाता है या नहीं। जब ऑपरेटिंग सिस्टम केस संवेदी होता है, तो मिलान से पहले पैरामीटर को अपरकेस या लोअरकेस अक्षर में सामान्यीकृत किया जाएगा।
उदाहरण कोड
आयात fnmatchimport osfile_pattern ='test_f*'files =os.listdir('./unix_files')फ़ाइलों में फ़ाइल नाम के लिए:प्रिंट('फ़ाइल:{}\t:{}'.format(filename, fnmatch.fnmatch( फ़ाइल नाम, file_pattern)))
आउटपुट
$ python3 310.UNIX_filename.pyFile:test_file5.txt:TrueFile:test_file2.png:TrueFile:test_file1.txt:TrueFile:Other_file.txt:FalseFile:TEST_FILE4.txt:FalseFile:abc.txt:FalseFile:test_file3.txt :सच$
फ़िल्टर() विधि
फ़िल्टर () विधि भी दो पैरामीटर लेती है। पहला नाम है, और दूसरा पैटर्न है। यह पैटर्न सभी फ़ाइल नामों की सूची से मेल खाने वाले फ़ाइल नामों की सूची ढूंढता है।
उदाहरण कोड
आयात करें nमिलान की गई फ़ाइलें:' + str(match_file))आउटपुट
$ python3 310.UNIX_filename.pyसभी फ़ाइलें:['test_file5.txt', 'test_file2.png', 'test_file1.txt', 'another_file.txt', 'TEST_FILE4.txt', 'abc.txt', ' test_file3.txt']मिलान की गई फ़ाइलें:['test_file5.txt', 'test_file2.png', 'test_file1.txt', 'test_file3.txt']$
अनुवाद () विधि
अनुवाद () विधि एक पैरामीटर लेती है। पैरामीटर एक पैटर्न है। हम पाइथन में रेगुलर एक्सप्रेशन का उपयोग करके मिलान करने के लिए शेल स्टाइल पैटर्न को दूसरे प्रकार के पैटर्न में बदलने के लिए इस फ़ंक्शन का उपयोग कर सकते हैं।
उदाहरण कोड
आयात fnmatch, refile_pattern ='test_f*.txt'unix_regex =fnmatch.translate(file_pattern)regex_object =re.compile(unix_regex) प्रिंट ('नियमित अभिव्यक्ति:' + str(unix_regex)) प्रिंट ('मैच ऑब्जेक्ट:' + str(regex_object.match('test_file_abcd123.txt')))
आउटपुट
$ python3 310.UNIX_filename.pyRegular Expression:(?s:test_f.*\.txt)\ZMatch Object:<_sre.SRE_Match object; अवधि=(0, 21), मैच='test_file_abcd123.txt'>$