कई बार प्रोग्राम को फाइल सिस्टम में फ़ाइलों की सूची के माध्यम से पुनरावृति करने की आवश्यकता होती है, अक्सर पैटर्न से मेल खाने वाले नामों के साथ। glob मॉड्यूल विशिष्ट डायरेक्टरी में फ़ाइलों की सूची बनाने में उपयोगी है, जिनका एक निश्चित एक्सटेंशन हो, या फ़ाइल नाम के भाग के रूप में एक निश्चित स्ट्रिंग हो।
glob मॉड्यूल फ़ंक्शन्स द्वारा उपयोग किया जाने वाला पैटर्न मिलान तंत्र UNIX पथ विस्तार नियमों का पालन करता है। यह मॉड्यूल हालांकि टिल्ड (~) और शेल वेरिएबल्स का विस्तार नहीं करता।
glob मॉड्यूल में मुख्य रूप से तीन फ़ंक्शन हैं:
glob()
यह फ़ंक्शन pathname पैरामीटर में दिए गए पैटर्न से मेल खाने वाली फ़ाइलों की सूची लौटाता है। pathname निरपेक्ष या सापेक्ष हो सकता है। इसमें * और ? जैसे वाइल्डकार्ड्स भी शामिल हो सकते हैं।
इस फ़ंक्शन का recursive पैरामीटर डिफ़ॉल्ट रूप से False है। यदि True, तो करंट डायरेक्टरी की सबडायरेक्ट्रीज़ को दिए गए पैटर्न से मेल खाने वाली फ़ाइलों को खोजने के लिए रिकर्सिवली खोजा जाता है।
निम्न कोड '.py' एक्सटेंशन वाली करंट डायरेक्टरी में सभी फ़ाइलों को प्रिंट करता है।
>>> import glob
>>> for file in glob.glob("*.py"):
... print(file)
निम्न कोड में, recursive=True पैरामीटर सबडायरेक्ट्रीज़ से '.py' एक्सटेंशन वाली फ़ाइलों को भी प्रिंट करने का कारण बनता है।
>>> for file in glob.glob("*.py", recursive=True):
... print(file)
पैटर्न पथ नाम में वाइल्डकार्ड कैरेक्टर ? शामिल हो सकता है। निम्न स्टेटमेंट उन फ़ाइलों की सूची प्रिंट करता है जिनका नाम तीन अक्षरों का है और पहले दो अक्षर 'pp' हैं।
>>> 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)
iglob()
यह फ़ंक्शन फ़ाइलों की सूची के बजाय जनरेटर ऑब्जेक्ट लौटाता है। next() फ़ंक्शन का उपयोग करके बाद के फ़ाइल नामों को नीचे दिखाए अनुसार प्रिंट किया जा सकता है।
>>> it = glob.iglob('*.py')
>>> type(it)
>>> while True:
... try:
... file = next(it)
... print(file)
... except StopIteration:
... break
escape()
यह फ़ंक्शन दिए गए कैरेक्टर्स को एस्केप करता है। यह तब उपयोगी होता है जब कुछ कैरेक्टर्स वाली फ़ाइलों को नाम का हिस्सा होना चाहिए। निम्न उदाहरण chars स्ट्रिंग में किसी भी कैरेक्टर वाली फ़ाइलों को खोजता है।
>>> 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