मैं बड़ी हार्ड डिस्क पर पाइथन में फ़ाइल लुकअप के साथ गड़बड़ कर रहा हूं। मैं os.walk और glob देख रहा हूँ। मैं आमतौर पर os.walk का उपयोग करता हूं क्योंकि मुझे यह बहुत साफ लगता है और यह तेज (सामान्य आकार निर्देशिकाओं के लिए) लगता है।os.walk या glob के लिए जल्दी?
क्या किसी को भी उनके साथ कोई अनुभव मिला है और कह सकता है कि कौन सा अधिक कुशल है? जैसा कि मैंने कहा, ग्लोब धीमा प्रतीत होता है, लेकिन आप वाइल्डकार्ड इत्यादि का उपयोग कर सकते हैं, जैसे चलने के साथ, आपको परिणाम फ़िल्टर करना होगा। कोर डंप को देखने का एक उदाहरण यहां दिया गया है।
core = re.compile(r"core\.\d*")
for root, dirs, files in os.walk("/path/to/dir/")
for file in files:
if core.search(file):
path = os.path.join(root,file)
print "Deleting: " + path
os.remove(path)
या
for file in iglob("/path/to/dir/core.*")
print "Deleting: " + file
os.remove(file)
मेरे लिए समय से पहले अनुकूलन की तरह लगता है। मैंने स्रोत पर देखा (http://hg.python.org/cpython/file/d01208ba482f/Lib/glob.py और http://hg.python.org/cpython/file/d01208ba482f/Lib/os.py) और देखें कि दोनों कार्य 'os.listdir' और' os.isdir' पर भरोसा करते हैं, इसलिए मेरा आंत मुझे बताता है कि आपको एक या दूसरे तरीके से लाभ नहीं मिलेगा। (हालांकि, जैसा कि नीचे दिए गए दो उत्तरों में बताया गया है, 'os.walk' उपनिर्देशिकाओं पर recurses और' glob.iglob' नहीं है, इसलिए यह तुलना करने के लिए समझ में नहीं आता है)। यदि आप प्रदर्शन समस्या के साथ समाप्त होते हैं, तो कुछ दृष्टिकोण देखें। अन्यथा, बस स्पष्ट कोड लिखें। –