2013-03-09 4 views
16

एक निर्देशिका मैं फ़ाइलों का एक बहुत कुछ है, नामित में के साथ शुरू फ़ाइल चुनें और अधिक या कम इस तरह:एक दिया स्ट्रिंग

001_MN_DX_1_M_32 
001_MN_SX_1_M_33 
012_BC_2_F_23 
... 
... 

अजगर में, मैं एक कोड है कि निर्देशिका एक से चयन करता है लिखने के लिए है एक निश्चित स्ट्रिंग के साथ शुरू फ़ाइल। उदाहरण के लिए, यदि स्ट्रिंग 001_MN_DX है, तो पायथन पहली फ़ाइल का चयन करता है, और इसी तरह।

मैं यह कैसे कर सकता हूं?

उत्तर

22

os.listdir, os.path.join और os.path.isfile का उपयोग करने का प्रयास करें।
लंबे रूप में (लूप के लिए के साथ),

import os 
path = 'C:/' 
files = [] 
for i in os.listdir(path): 
    if os.path.isfile(os.path.join(path,i)) and '001_MN_DX' in i: 
     files.append(i) 

कोड, सूची-comprehensions साथ है लंबे विवरण के लिए

import os 
path = 'C:/' 
files = [i for i in os.listdir(path) if os.path.isfile(os.path.join(path,i)) and \ 
     '001_MN_DX' in i] 

चेक here ...

+0

यह अच्छी तरह से काम करता है के साथ शुरू होता मौजूदा निर्देशिका में सभी फ़ाइलों का पता लगाएं। धन्यवाद। :) –

+5

मैं जगह लेंगे 'और मैं' घ में '001_MN_DX' के लिए 'और i.startswith ('001_MN_DX')' के बाद से एक फ़ाइल 'E_001_MN_DX.txt' के रूप में अच्छी तरह से मूल कोड से मेल खाएगा। – karelv

5
import os, re 
for f in os.listdir('.'): 
    if re.match('001_MN_DX', f): 
     print f 
3

आप कर सकते हैं निर्देशिका में फ़ाइलों को सूचीबद्ध करने के लिए ओएस मॉड्यूल का उपयोग करें।

उदाहरण के लिए: जहां नाम 001_MN_DX

import os 
list_of_files = os.listdir(os.getcwd()) #list of files in the current directory 
for each_file in list_of_files: 
    if each_file.startswith('001_MN_DX'): #since its all type str you can simply use startswith 
     print each_file 
24
import os 
prefixed = [filename for filename in os.listdir('.') if filename.startswith("prefix")] 
संबंधित मुद्दे