कई बार प्रोग्राम को फाइल सिस्टम में फाइलों की सूची के माध्यम से पुनरावृति की आवश्यकता होती है, अक्सर एक पैटर्न से मेल खाने वाले नामों के साथ। ग्लोब मॉड्यूल विशिष्ट निर्देशिका में, एक निश्चित एक्सटेंशन वाले, या फ़ाइल नाम के एक भाग के रूप में एक निश्चित स्ट्रिंग के साथ फ़ाइलों की रोशनी बनाने में उपयोगी है।
ग्लोब मॉड्यूल फ़ंक्शंस द्वारा उपयोग किया जाने वाला पैटर्न मिलान तंत्र UNIX पथ विस्तार नियमों का पालन करता है। हालांकि यह मॉड्यूल टिल्ड (~) और शेल चर का विस्तार नहीं करता है।
ग्लोब मॉड्यूल में मुख्य रूप से तीन फंक्शन होते हैं
ग्लोब ()
यह फ़ंक्शन पथनाम पैरामीटर में दिए गए पैटर्न से मेल खाने वाली फ़ाइलों की एक सूची देता है। पथनाम पूर्ण या सापेक्ष हो सकता है। इसमें * और ? जैसे वाइल्ड कार्ड शामिल हो सकते हैं।
इस फ़ंक्शन का पुनरावर्ती पैरामीटर डिफ़ॉल्ट रूप से गलत है। यदि सही है, वर्तमान निर्देशिका की उपनिर्देशिकाओं को दिए गए पैटर्न से मेल खाने वाली फ़ाइलों को खोजने के लिए पुनरावर्ती रूप से खोजा जाता है।
निम्नलिखित कोड वर्तमान निर्देशिका में सभी फाइलों को '.py' एक्सटेंशन के साथ प्रिंट करता है।
>>> import glob >>> for file in glob.glob("*.py"): print (file)
निम्नलिखित कोड में, पुनरावर्ती =सही पैरामीटर उपनिर्देशिकाओं से '.py' एक्सटेंशन वाली फ़ाइलों को भी मुद्रित करने का कारण बनता है।
>>> for file in glob.glob("*.py", recursive=True): print (file)
पैटर्न पथ नाम में वाइल्ड कार्ड वर्ण शामिल हो सकता है? निम्नलिखित कथन उन फाइलों की सूची को प्रिंट करता है जिनके नाम में पहले दो अक्षरों के साथ तीन अक्षर हैं, 'पीपी' हैं।
>>> for file in glob.glob("pp?.py"): print (file)
निम्नलिखित कोड उन फाइलों को प्रिंट करता है जिनका नाम एक अंक के साथ समाप्त होता है।
>>> for file in glob.glob('*[0-9].py') print (file)
निम्नलिखित सिंटैक्स के कारण दिए गए पथ से मेल खाने वाली फ़ाइलें पुनरावर्ती रूप से मुद्रित होती हैं।
>>> glob.glob('**/*.py', recursive=True)
वर्तमान निर्देशिका में निर्देशिकाओं के नाम पुनरावर्ती रूप से मुद्रित करने के लिए,
>>> glob.glob('tcl/**/', recursive=True)
इग्लोब ()
यह फ़ंक्शन फ़ाइलों की सूची के बजाय एक जनरेटर ऑब्जेक्ट देता है। अगला () फ़ंक्शन का उपयोग करके, बाद के फ़ाइल नाम नीचे के रूप में मुद्रित किए जा सकते हैं।
>>> it=glob.iglob('*.py') >>> type(it) <class 'generator'> >>> while True: try: file=next(it) print (file) except StopIteration: break
एस्केप ()
यह फ़ंक्शन दिए गए वर्णों से बच निकलता है। यह तब उपयोगी होता है जब कुछ वर्णों वाली फ़ाइलों को नाम का हिस्सा बनाने की आवश्यकता होती है। निम्न उदाहरण उन फ़ाइलों की खोज करता है जिनमें वर्ण स्ट्रिंग में कोई भी वर्ण है।
>>> chars='[]()#' >>> for char in chars: esc='*'+glob.escape(char)+'.py' for file in (glob.glob(esc)): print (file) xyz[.py pp[].py pp(.py pp#.py