"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायथन में उप-फ़ोल्डरों को पुनरावर्ती रूप से कैसे खोजें और फ़ाइलें पुनर्प्राप्त करें?

पायथन में उप-फ़ोल्डरों को पुनरावर्ती रूप से कैसे खोजें और फ़ाइलें पुनर्प्राप्त करें?

2024-11-16 को प्रकाशित
ब्राउज़ करें:661

How to Recursively Search Sub-Folders and Retrieve Files in Python?

पुनरावर्ती उप-फ़ोल्डर खोज और फ़ाइल पुनर्प्राप्ति

प्रोग्रामिंग के दायरे में, निर्देशिकाओं को पार करना और फ़ाइलों को पुनर्प्राप्त करना एक सामान्य कार्य हो सकता है। एक कुशल दृष्टिकोण उप-फ़ोल्डर्स के माध्यम से खोज करने और विशिष्ट मानदंडों को पूरा करने वाली फ़ाइलों की एक सूची जमा करने के लिए एक पुनरावर्ती एल्गोरिदम को नियोजित करना है।

समस्या का सामना करना पड़ा

एक उपयोगकर्ता को एक बाधा का सामना करना पड़ा पुनरावर्ती उप-फ़ोल्डर खोज में विशिष्ट फ़ाइलों की एक सूची बनाने का प्रयास करते समय। यह समस्या फ़ाइल वाले वर्तमान फ़ोल्डर के बजाय सबफ़ोल्डर वैरिएबल को सबफ़ोल्डर्स की सूची में खींचने से उत्पन्न हुई है। मुख्य फ़ोल्डर के अंतर्गत उप-फ़ोल्डर का नाम जहां वांछित फ़ाइल स्थित है।

Resolution

इस समस्या को हल करने की कुंजी "रूट" का लाभ उठाने में निहित है या "सबफ़ोल्डर" के बजाय "dirpath" वेरिएबल। यह वैरिएबल रिकर्सन के दौरान ट्रैवर्स की जा रही वर्तमान निर्देशिका का पूर्ण पथ रखता है। इस पथ को फ़ाइलनेमपाथ के निर्माण में शामिल करके, वांछित सटीकता प्राप्त की जा सकती है।

आयात ओएस परिणाम = [os.path.join(dp, f) dp, dn, फ़ाइल नामों के लिए os.walk(PATH) में f के लिए फ़ाइल नामों में यदि os.path.splitext(f)[1] == '.txt']

ग्लोब मॉड्यूल एन्हांसमेंट

import os
result = [os.path.join(dp, f) for dp, dn, filenames in os.walk(PATH) for f in filenames if os.path.splitext(f)[1] == '.txt']

आयात ओएस ग्लोब आयात ग्लोब से परिणाम = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]

Generator Function

import os
from glob import glob
result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]

itertools आयात श्रृंखला से परिणाम = (चेन.फ्रॉम_इटरेबल(ग्लोब(ओएस.पाथ.जॉइन(x[0], '*.txt')) फॉर एक्स इन ओएस.वॉक('.')))

पायथन 3.4 समाधान

from itertools import chain
result = (chain.from_iterable(glob(os.path.join(x[0], '*.txt')) for x in os.walk('.')))

pathlib आयात पथ से परिणाम = सूची(पथ("।").rglob("*.[tT][xX][tT]"))

ये दृष्टिकोण उप-फ़ोल्डरों को पुनरावर्ती रूप से खोजने और एक सूची संकलित करने के लिए प्रभावी समाधान प्रदान करते हैं फ़ाइलें वांछित मानदंडों को पूरा करती हैं, जिससे आपकी फ़ाइल पुनर्प्राप्ति कार्य आसान हो जाता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3