Выберите файл, начинающийся с заданной строки.
В каталоге у меня много файлов, названных более или менее:
001_MN_DX_1_M_32
001_MN_SX_1_M_33
012_BC_2_F_23
...
...
В Python я должен написать код, который выбирает из каталога файл, начинающийся с определенной строки. Например, если строка 001_MN_DX
, Python выбирает первый файл и т.д.
Как мне это сделать?
Ответы
Ответ 1
Попробуйте использовать 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)
Код, со списком
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]
Проверьте здесь подробное объяснение...
Ответ 2
import os
prefixed = [filename for filename in os.listdir('.') if filename.startswith("prefix")]
Ответ 3
import os, re
for f in os.listdir('.'):
if re.match('001_MN_DX', f):
print f
Ответ 4
Вы можете использовать модуль os для отображения файлов в каталоге.
Например: Найти все файлы в текущем каталоге, где имя начинается с 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
Ответ 5
Вы можете использовать модуль glob, он соответствует правилам оболочки Unix для сопоставления с образцом. Узнать больше.
from glob import glob
files = glob('*001_MN_DX*')
Ответ 6
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 not, review your criteria
#Do stuff with that file