दिलचस्प पोस्ट
कोको में XML को पार्स करना मैं फ़ेविकॉन रिफ्रेश को कैसे लागू करूं? एक तत्व में पाठ की एक स्ट्रिंग खोजें और कुछ स्पैन टैग्स को गोल करें विस्तारित तरीकों को केवल गैर-नेस्टेड, गैर-सामान्य स्थैतिक वर्ग में क्यों स्वीकार्य है? क्या विंडोज पर एक परमाणु फाइल का नाम बदलना (ओवरराइट के साथ) संभव है? एमवीवीएम के साथ डब्ल्यूपीएफ में संवाद संभालना MVC-3-कनवर्ट-टू-4 ऐप के लिए सिस्टम.Web.Optimization के संदर्भ को कैसे जोड़ें .NET WinForms ऐप में फ़ॉन्ट डीपीआई को कैसे नियंत्रित करें jQuery.ajax () विधि के async विकल्प पदावनत, अब क्या? अनचेक वाले चेकबॉक्स को पोस्ट करें एक सामान्य शब्दकोश कुंजी के रूप में एक वस्तु का उपयोग करना पथ तक पहुंच अस्वीकृत है JavaScript में base64 स्ट्रिंग से एक ब्लॉब बनाना उद्देश्य-सी में श्रेणियों का उपयोग करते हुए अधिभावी तरीकों शून्य तत्वों के साथ सरणी की क्या ज़रूरत है?

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

मुझे किसी दिए गए निर्देशिका में सभी। .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)