使用Python os.walk在子目录中查找特定文件

时间:2016-10-05 15:02:36

标签: python os.walk

在Windows中,如果我跑:

dir NP _ ???。LAS

我得到2个文件:

NP_123.LAS

NP_1234.LAS

使用fmatch和NP _ ????。LAS掩码我只得到NP_1234.LAS,而不是NP_123.LAS。

下面是我正在运行的代码:

def FindFiles(directory, pattern):
    flist=[]
    for root, dirs, files in os.walk(directory):
        for filename in fnmatch.filter(files, pattern):
            flist.append(os.path.join(root, filename))
    return flist

可以更改此项以获取与dir命令相同的文件列表,只使用一种模式吗?

1 个答案:

答案 0 :(得分:0)

您可以使用re通过允许实际正则表达式为您提供更多灵活性。正则表达式“[0-9] {3,4}”匹配3位或4位数字。

def FindFiles(directory, pattern):
    flist=[]
    for root, dirs, files in os.walk(directory):
        prog = re.compile("NP_[0-9]{3,4}.txt")
        for filename in filter(prog.match, files):
            flist.append(os.path.join(root, filename))
    return flist