Domanda Scegli un file che inizia con una determinata stringa


In una directory ho molti file, nominati più o meno così:

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

In Python, devo scrivere un codice che seleziona dalla directory un file che inizia con una determinata stringa. Ad esempio, se la stringa è 001_MN_DX, Python seleziona il primo file e così via.

Come posso farlo?


21
2018-03-09 16:18


origine


risposte:


Prova a usare os.listdir,os.path.join e os.path.isfile.
In forma lunga (con loop per),

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)

Codice, con le liste di comprensione è

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]

Dai un'occhiata Qui per la lunga spiegazione ...


31
2018-03-09 16:25



import os
prefixed = [filename for filename in os.listdir('.') if filename.startswith("prefix")]

36
2018-03-09 17:16



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

5
2018-03-09 16:30



È possibile utilizzare il modulo os per elencare i file in una directory.

Es .: Trova tutti i file nella directory corrente in cui il nome inizia con 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

3
2018-03-09 16:40



import os for filename in os.listdir('.'): if filename.startswith('criteria here'): print filename #print the name of the file to make sure it is what you really want. If it's not, review your criteria #Do stuff with that file


-1
2018-04-09 17:30