सहित निर्देशिका में फ़ाइलों को कैसे प्राप्त करें, मैं सभी उपनिर्देशिकाओं सहित निर्देशिका में सभी लॉग फ़ाइलों (.log) की एक सूची प्राप्त करने का प्रयास कर रहा हूं।सभी उपनिर्देशिका
उत्तर
चेकआउट Python Recursive Directory Walker। संक्षेप में os.listdir() और os.walk() आपके मित्र हैं।
आप मौजूदा निर्देशिका में सूचीबद्ध करने के लिए चाहते हैं, आप की तरह कुछ का उपयोग कर सकते हैं:
import os
for e in os.walk(os.getcwd()):
print e
बस वहाँ परिणाम प्राप्त करने के अन्य रास्ते पर
os.getcwd()
बदल जाते हैं।
यह उत्तर ओपी के प्रश्न को संबोधित नहीं करता है और यह उन लोगों के लिए प्रासंगिक नहीं है जो एक ही उत्तर की तलाश करेंगे। – Andrew
import os
import os.path
for dirpath, dirnames, filenames in os.walk("."):
for filename in [f for f in filenames if f.endswith(".log")]:
print os.path.join(dirpath, filename)
यदि आप "।" से एक अलग निर्देशिका में खोजना चाहते हैं। आप sys.argv [1] के रूप में direcotry पास कर सकते हैं और os.walk (sys.argv [1]) कॉल करें। –
अतिरिक्त सुधार: सूची समझ के बजाय जनरेटर का उपयोग करें: फ़ाइल नाम के लिए (f के लिए f ...) –
यदि आप किसी निश्चित निर्देशिका को बहिष्कृत करना चाहते हैं, उदाहरण के लिए, 'old_logs', तो आप इसे' dirnames' से हटा सकते हैं और यह खोज नहीं की जाएगी: 'अगर "old_logs" dirnames में: dirnames.remove ("old_logs") ' – CGFoX
आप os.walk के साथ ग्लोब मॉड्यूल का भी उपयोग कर सकते हैं।
import os
for logfile in os.popen('find . -type f -name *.log').read().split('\n')[0:-1]:
print logfile
या
import subprocess
(out, err) = subprocess.Popen(["find", ".", "-type", "f", "-name", "*.log"], stdout=subprocess.PIPE).communicate()
for logfile in out.split('\n')[0:-1]:
print logfile
इन दो find . -type f -name *.log
का लाभ लें:
import os
from glob import glob
files = []
start_dir = os.getcwd()
pattern = "*.log"
for dir,_,_ in os.walk(start_dir):
files.extend(glob(os.path.join(dir,pattern)))
अंडरस्कोर फॉर-लूप में क्या करते हैं? '_' –
@ न्यूवेस्ट 'ओ। वॉल्क' प्रत्येक पुनरावृत्ति पर एक 3-टुपल '(दिरपथ, डायरनाम, फ़ाइल नाम)' देता है, और हम केवल 'दिरपथ' (उपरोक्त 'डीआईआर' को सौंपा गया) में रूचि रखते हैं; अंडरस्कोर का उपयोग अन्य 2 मूल्यों के लिए प्लेसहोल्डर्स के रूप में किया जाता है, जिनकी हमें रुचि नहीं है (यानी 'dirnames', और फिर' फ़ाइल नाम ', वेरिएबल '_' को असाइन किए जा रहे हैं, जिसे हम कभी भी उपयोग नहीं करेंगे)। – tavnab
मैं एक समाधान है।
पहले एक सरल लेकिन जब -name *.log
, जोड़ने लेकिन बस find ../testdata -type f
के लिए ठीक काम किया (मेरे ओएस एक्स वातावरण में) सफेद-अंतरिक्ष के लिए इसकी गारंटी नहीं है।
दूसरा प्रोप्रोसेस का उपयोग करने वाला दूसरा अधिक जटिल लगता है, लेकिन यह श्वेत-स्थान सुरक्षित है (फिर से, मेरे ओएस एक्स पर्यावरण में)।
इससे कार्तिक गुच्छा, जवाब में से प्रेरित है https://stackoverflow.com/a/3503909/2834102
- 1. उपनिर्देशिका में फेविकॉन सभी सबडोमेन
- 2. उपनिर्देशिका
- 3. उपनिर्देशिका
- 4. स्रोत उपनिर्देशिका
- 5. एक्सएसएलटी उपनिर्देशिका
- 6. एक उपनिर्देशिका
- 7. एक उपनिर्देशिका
- 8. बैश, उपनिर्देशिका
- 9. निर्देशिका में फ़ाइलों को सूचीबद्ध करना और सभी उपनिर्देशिका
- 10. निर्देशिका में सभी फ़ाइलों और निर्देशिकाओं को सूचीबद्ध करें + उपनिर्देशिका
- 11. विंडोज बैच फ़ाइल - उपनिर्देशिका में सभी फ़ाइलों को सम्मिलित करें
- 12. उपनिर्देशिका में रिकर्सिव मेक
- 13. । उपनिर्देशिका 'ओवरराइडिंग' पेरेंट एचटीएसीएसी
- 14. पीएचपी: लिस्टिंग उपनिर्देशिका
- 15. सीएमके उपनिर्देशिका निर्भरता
- 16. .htaccess reewriteRule उपनिर्देशिका
- 17. गिट में चेकआउट उपनिर्देशिका?
- 18. गिट: एक उपनिर्देशिका
- 19. अलग-अलग उपनिर्देशिका
- 20. .htaccess उपनिर्देशिका से रूट
- 21. कैसे एक विशिष्ट उपनिर्देशिका
- 22. बैश पाश उपनिर्देशिका
- 23. वाइल्डकार्ड उपनिर्देशिका लक्ष्य
- 24. ऐप/संपत्ति/छवियों/उपनिर्देशिका
- 25. जब मैं संभवतः उपनिर्देशिका
- 26. .htaccess URL पुनर्लेखन उपनिर्देशिका
- 27. nginx एक उपनिर्देशिका
- 28. Makefile सी उपनिर्देशिका नियम obj
- 29. वाईएक्स - बिन उपनिर्देशिका कैसे बनाएं?
- 30. विम फ़ज़ी खोजक उपनिर्देशिका खोज?
यह पहले से ही कहा गया है: http://stackoverflow.com/questions/837606/find-the-oldest-file-recursively-in- एक निर्देशिका, साथ ही साथ कुछ अन्य (खोज बॉक्स में 'पायथन चलना' खोजें) –