选择以给定字符串开头的文件

时间:2013-03-09 16:18:39

标签: python file

在一个目录中,我有很多文件,或多或少地命名为:

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

在Python中,我必须编写一个代码,从目录中选择以某个字符串开头的文件。例如,如果字符串是001_MN_DX,则Python选择第一个文件,依此类推。

我该怎么做?

7 个答案:

答案 0 :(得分:46)

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

答案 1 :(得分:40)

尝试使用os.listdiros.path.joinos.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