दिलचस्प पोस्ट
दो-तरफ़ा एन्क्रिप्शन: मुझे ऐसे पासवर्ड संग्रहीत करने की आवश्यकता होती है जिन्हें पुनर्प्राप्त किया जा सकता है अलग आइटम लेआउट के साथ ListView के लिए ViewHolders बनाना Android प्रक्रिया हत्यारा "डिफरेंसिंग टाइप-पक्ड पॉइंटर कड़े-अलियासिंग नियमों को तोड़ देगा" चेतावनी तीन के नियम सी ++ के साथ पांच का नियम बनता है? जावास्क्रिप्ट स्थानीय स्टोरेज ऑब्जेक्ट विंडोज 7 पर आईई 11 में टूट गया jQuery के दस्तावेज़। सिक्रेट एलेमेंट समकक्ष? जावास्क्रिप्ट कंटेन्टिटेबल – सेट कर्सर / कैरेट इंडेक्स से Servlet और path पैरामीटर जैसे / xyz / {value} / test, कैसे web.xml में मैप करें? शून्य संख्या ड्रॉप न करें: डॉपड बारप्लोट एंड्रॉइड: क्रियाएँ के बीच एक हैश नक्शा पास करना जेपीए: यूनिडायरेक्शनल कई-से-एक और कैस्केडिंग हटाना विशेष वर्ष के विशेष महीने में दिनों की संख्या? अंतर और चारों में अंतर मिलकर / फेट्टाक और पुचर / एफटीपीसी? डीटीओ, वीओ, पॉजो, जावाबींस के बीच का अंतर?

मैं किसी दिए गए निर्देशिका में फ़ाइलों पर कैसे पुनरावृत्त करूं?

मुझे किसी दिए गए निर्देशिका में सभी। .asm फाइलों के माध्यम से पुनरावृति करने की जरूरत है और उन पर कुछ कार्रवाइयां करें।

यह कैसे एक कुशल तरीके से किया जा सकता है?

वेब के समाधान से एकत्रित समाधान "मैं किसी दिए गए निर्देशिका में फ़ाइलों पर कैसे पुनरावृत्त करूं?"

मूल उत्तर:

 for filename in os.listdir(directory): if filename.endswith(".asm") or filename.endswith(".py"): # print(os.path.join(directory, filename)) continue else: continue 

उपर्युक्त उत्तर के पायथन 3.6 संस्करण, os का प्रयोग करके – यह मानते हुए कि आपके पास डायरेक्टरी पथ को directory_in_str नामक एक चर में एक str ऑब्जेक्ट के रूप में है:

 directory = os.fsencode(directory_in_str) for file in os.listdir(directory): filename = os.fsdecode(file) if filename.endswith(".asm") or filename.endswith(".py"): # print(os.path.join(directory, filename)) continue else: continue 

या फिर, pathlib का उपयोग pathlib :

 from pathlib import Path pathlist = Path(directory_in_str).glob('**/*.asm') for path in pathlist: # because path is object not string path_in_str = str(path) # print(path_in_str) 

आप ग्लोब मॉड्यूल का उपयोग करने की कोशिश कर सकते हैं

 import glob for filename in glob.iglob('/foobar/*.asm'): print('/foobar/%s' % filename) 

यह सभी वंशावली फ़ाइलों पर फिर से यात्रा करेगा, न कि केवल निर्देशिका के तत्काल बच्चों को:

 import os for subdir, dirs, files in os.walk(rootdir): for file in files: #print os.path.join(subdir, file) filepath = subdir + os.sep + file if filepath.endswith(".asm"): print (filepath) 

पायथन 3.4 और बाद में मानक लाइब्रेरी में पथलिब प्रदान करते हैं। तुम यह कर सकते थे:

 from pathlib import Path asm_pths = [pth for pth in Path.cwd().iterdir() if pth.suffix == '.asm'] 

या यदि आपको सूची की समझें पसंद नहीं हैं:

 asm_paths = [] for pth in Path.cwd().iterdir(): if pth.suffix == '.asm': asm_pths.append(pth) 

Path ऑब्जेक्ट को आसानी से स्ट्रिंग में कनवर्ट किया जा सकता है।

मैं अभी तक इस कार्यान्वयन से काफी खुश नहीं हूं, मुझे एक कस्टम कन्स्ट्रक्टर बनाना है जो DirectoryIndex._make(next(os.walk(input_path))) करता है, जैसे कि आप उस पथ को बस पास कर सकते हैं जिसे आप फ़ाइल नाम के लिए चाहते हैं। संपादन का स्वागत है!

 import collections import os DirectoryIndex = collections.namedtuple('DirectoryIndex', ['root', 'dirs', 'files']) for file_name in DirectoryIndex(*next(os.walk('.'))).files: file_path = os.path.join(path, file_name)