2013-03-09 16 views
16

In einem Verzeichnis ich viele Dateien haben, mit dem Namen mehr oder weniger wie folgt aus:Wählen Sie eine Datei mit einer bestimmten Zeichenkette beginnen

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

In Python, muss ich einen Code schreiben, der aus dem Verzeichnis ein wählt Datei beginnend mit einer bestimmten Zeichenfolge. Wenn die Zeichenfolge beispielsweise 001_MN_DX lautet, wählt Python die erste Datei aus und so weiter.

Wie kann ich es tun?

Antwort

22

Verwenden Sie os.listdir, und os.path.isfile.
In Langform (mit for-Schleifen),

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) 

-Code, mit list-Comprehensions ist

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] 

prüfen here für die lange Erklärung ...

+0

es gut funktioniert. Vielen Dank. :) –

+5

Ich würde 'und '001_MN_DX' in i' zu' ersetzen und i.startswith ('001_MN_DX') ' Da eine Datei 'E_001_MN_DX.txt' würde auch den ursprünglichen Code entsprechen. – karelv

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

können Sie Verwenden Sie das os-Modul, um die Dateien in einem Verzeichnis aufzulisten.

Beispiel: Hier finden Sie alle Dateien im aktuellen Verzeichnis, in dem Name beginnt mit 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")] 
Verwandte Themen