जब हम Python में फ़ाइलों के साथ काम करते हैं, तो हमें किसी विशेष पैटर्न के आधार पर फ़ाइलें प्राप्त करने की आवश्यकता हो सकती है। Python में glob मॉड्यूल हमें दिए गए पैटर्न से मेल खाने वाली फ़ाइलों की सूची बनाने के लिए फ़ंक्शन प्रदान करता है, जैसे वाइल्डकार्ड कैरेक्टर और "**" के साथ रिकर्सिव सर्च का समर्थन। यहाँ हम इस मॉड्यूल को कैसे इम्पोर्ट कर सकते हैं और उपयोग कर सकते हैं:
import glob
txt_files = glob.glob('*.txt') # वर्तमान डायरेक्टरी में सभी .txt फ़ाइलें प्राप्त करता है
print(txt_files, type(txt_files)) # .txt फ़ाइलों की सूची और उसका प्रकार प्रिंट करता है
मान लीजिए कि वर्तमान डायरेक्टरी में तीन टेक्स्ट फ़ाइलें हैं: file1.txt, file2.txt, और file3.txt, तो आउटपुट होगा:
glob फ़ंक्शन एक स्ट्रिंग के रूप में एक पैटर्न लेता है और उस पैटर्न से मेल खाने वाली फ़ाइलों और डायरेक्टरी पथों की एक सूची लौटाता है।
हमारे पिछले उदाहरण में, हमने वाइल्डकार्ड कैरेक्टर * का उपयोग किया जो शून्य या अधिक कैरेक्टर से मेल खाता है। इसलिए, *.txt उन सभी फ़ाइलों से मेल खाता है जो .txt से समाप्त होती हैं।
हम सबडायरेक्टरी में भी फ़ाइलों को रिकर्सिव रूप से खोज सकते हैं:
nested_files = glob.glob('**/*.txt', recursive=True) # रिकर्सिव रूप से सभी .txt फ़ाइलों को प्राप्त करता है
print(nested_files, type(nested_files)) # .txt फ़ाइलों की सूची और उसका प्रकार प्रिंट करता है
मान लीजिए कि हमारी पिछली फ़ाइलों के अतिरिक्त, वर्तमान डायरेक्टरी में एक folder1 भी है जिसमें file4.txt और file5.txt शामिल हैं, तो आउटपुट होगा:
यहाँ, हमने अपने पैटर्न में ** का उपयोग किया है। पाथनेम पैटर्न में यह प्रतीक सभी फ़ाइलों और शून्य या अधिक डायरेक्टरी और सबडायरेक्टरी के लिए खड़ा होता है। हमने recursive=True आर्ग्यूमेंट का भी उपयोग किया है ताकि फ़ंक्शन सबडायरेक्टरीज़ में देख सके। इसलिए, '**/*.txt', recursive=True वर्तमान डायरेक्टरी और उसकी सबडायरेक्टरीज़ से सभी .txt फ़ाइलों को प्राप्त करता है।
यह Python में फ़ाइल पथों को संभालने और फ़ाइल हैंडलिंग कार्यों को स्वचालित करने का एक उपयोगी तरीका है।
चुनौती: .py फ़ाइलें खोजें
एक टेक स्टार्टअप में एक नए डेटा वैज्ञानिक के रूप में, आपको अपने वर्तमान प्रोजेक्ट में सभी Python फ़ाइलों को संगठित करने का कार्य दिया गया है। पिछली कुछ हफ्तों की जल्दी के कारण, Python फ़ाइलें (.py) वर्तमान डायरेक्टरी में बिखरी हुई हैं। आपका काम एक ऐसा Python प्रोग्राम बनाना है जो glob का उपयोग करके वर्तमान डायरेक्टरी में मौजूद सभी Python फ़ाइलों (.py) की लिस्ट बनाए। हालांकि, चूंकि आप केवल फ़ाइलों के नामों में रुचि रखते हैं न कि उनके स्थान में, इसलिए आउटपुट में केवल फ़ाइलों के नाम बिना डायरेक्टरी पथ के होने चाहिए।
प्रोग्राम को कोई इनपुट लेने की आवश्यकता नहीं है।
प्रोग्राम का आउटपुट वर्तमान डायरेक्टरी में Python फ़ाइलों के नामों को शामिल करना चाहिए, प्रत्येक नाम एक नई लाइन पर। आउटपुट में डायरेक्टरी पथ शामिल न करें। आउटपुट को वर्णक्रमानुसार क्रमबद्ध होना चाहिए।