在一个目录中,我有很多文件,或多或少地命名为:
001_MN_DX_1_M_32
001_MN_SX_1_M_33
012_BC_2_F_23
...
...
在Python中,我必须编写一个代码,从目录中选择以某个字符串开头的文件。例如,如果字符串是001_MN_DX
,则Python选择第一个文件,依此类推。
我该怎么做?
答案 0 :(得分:46)
import os
prefixed = [filename for filename in os.listdir('.') if filename.startswith("prefix")]
答案 1 :(得分:40)
尝试使用os.listdir
,os.path.join
和os.path.isfile
长形式(带for循环),
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]
检查here以获取详细说明......
答案 2 :(得分:7)
import os, re
for f in os.listdir('.'):
if re.match('001_MN_DX', f):
print f
答案 3 :(得分: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
答案 4 :(得分:0)
您可以使用模块 glob ,该模块遵循Unix shell规则进行模式匹配。 See more.
from glob import glob
files = glob('*001_MN_DX*')
答案 5 :(得分:0)
使用更新的 pathlib
模块,请参阅 link:
from pathlib import Path
myDir = Path('my_directory/')
fileNames = [file.name for file in myDir.iterdir() if file.name.startswith('prefix')]
filePaths = [file for file in myDir.iterdir() if file.name.startswith('prefix')]
答案 6 :(得分:-1)
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