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

पायथन में यूनिक्स फाइलनाम पैटर्न मैचिंग

यहां हम देखेंगे कि पायथन का उपयोग करके हम यूनिक्स शेल स्टाइल पैटर्न मैचिंग तकनीक कैसे प्राप्त कर सकते हैं। fnmatch नामक एक मॉड्यूल है, जिसका उपयोग कार्य करने के लिए किया जाता है। यह मॉड्यूल फाइल नाम की तुलना एक पैटर्न से करता है, फिर मिलान के अनुसार True या False लौटाता है।

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

import fnmatch

यूनिक्स टर्मिनल में, पैटर्न मिलान के लिए कुछ वाइल्डकार्ड्स हैं। ये नीचे दिए गए हैं:

  • '*' एस्टेरिस्क का उपयोग सब कुछ मिलान करने के लिए किया जाता है।
  • '?' क्वेश्चन मार्क एक सिंगल कैरेक्टर मिलान करने के लिए है।
  • [seq] सीक्वेंस का उपयोग क्रम में वर्णों से मिलान करने के लिए किया जाता है।
  • [!seq] नॉट इन सीक्वेंस का उपयोग उन वर्णों से मिलान करने के लिए किया जाता है जो सीक्वेंस में मौजूद नहीं हैं।

यदि हम एस्टेरिस्क या क्वेश्चन मार्क्स को कैरेक्टर के रूप में खोजना चाहते हैं, तो हमें उन्हें इस तरह उपयोग करना होगा: [*] या [?]

fnmatch() मेथड

fnmatch() मेथड दो आर्गुमेंट्स लेता है, ये फाइलनाम और पैटर्न हैं। यह फंक्शन जांचने के लिए उपयोग किया जाता है कि क्या फाइलनाम दिए गए पैटर्न से मेल खाता है या नहीं। जब ऑपरेटिंग सिस्टम केस-सेंसिटिव होता है, तो पैरामीटर्स को मिलान से पहले अपरकेस या लोअरकेस अक्षर में नॉर्मलाइज़ किया जाएगा।

उदाहरण कोड

import fnmatch
import os

file_pattern = 'test_f*'
files = os.listdir('./unix_files')
for filename in files:
    print('File: {}\t: {}'.format(filename, fnmatch.fnmatch(filename, file_pattern)))

आउटपुट

$ python3 310.UNIX_filename.py
File: test_file5.txt : True
File: test_file2.png : True
File: test_file1.txt : True
File: another_file.txt : False
File: TEST_FILE4.txt : False
File: abc.txt : False
File: test_file3.txt : True
$

filter() मेथड

filter() मेथड भी दो पैरामीटर्स लेता है। पहला नामों का है, और दूसरा पैटर्न का है। यह पैटर्न सभी फाइलनामों की सूची से मिलान वाले फाइलनामों की सूची खोजता है।

उदाहरण कोड

import fnmatch
import os

file_pattern = 'test_f*'
files = os.listdir('./unix_files')
match_file = fnmatch.filter(files, file_pattern)
print('All files:' + str(files))
print('\nMatched files:' + str(match_file))

आउटपुट

$ python3 310.UNIX_filename.py
All files:['test_file5.txt', 'test_file2.png', 'test_file1.txt', 'another_file.txt', 'TEST_FILE4.txt', 'abc.txt', 'test_file3.txt']
Matched files:['test_file5.txt', 'test_file2.png', 'test_file1.txt', 'test_file3.txt']
$

translate() मेथड

translate() मेथड एक पैरामीटर लेता है। पैरामीटर एक पैटर्न है। हम इस फंक्शन का उपयोग शेल स्टाइल पैटर्न को पायथन में रेगुलर एक्सप्रेशन्स का उपयोग करके मिलान करने के लिए दूसरे प्रकार के पैटर्न में बदलने के लिए कर सकते हैं।

उदाहरण कोड

import fnmatch, re

file_pattern = 'test_f*.txt'
unix_regex = fnmatch.translate(file_pattern)
regex_object = re.compile(unix_regex)
print('Regular Expression:' + str(unix_regex))
print('Match Object:' + str(regex_object.match('test_file_abcd123.txt')))

आउटपुट

$ python3 310.UNIX_filename.py
Regular Expression:(?s:test_f.*\.txt)\Z
Match Object:<_sre.SRE_Match object; span=(0, 21), match='test_file_abcd123.txt'>
$
  1. पायथन में पैटर्न कैसे प्रिंट करें पायथन में पैटर्न कैसे प्रिंट करें

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

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

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

  1. - रूबी पैटर्न मैचिंग मास्टर करें: एक व्यावहारिक गाइड

    आइए रूबी में पैटर्न मैचिंग पर एक संक्षिप्त चर्चा से शुरू करते हैं, यह क्या करता है, और यह कोड पठनीयता को कैसे सुधारने में मदद कर सकता है। यदि आप कुछ साल पहले की तरह मेरे जैसे हैं, तो आप इसे रेगेक्स में पैटर्न मैचिंग के साथ भ्रमित कर सकते हैं। यहां तक कि पैटर्न मैचिंग की एक त्वरित गूगल खोज बिना किसी