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

使用Python os.walk在子目录中查找特定文件,python,os.walk,Python,Os.walk,在Windows中,如果我运行: 方向NP_???.LAS 我得到2个文件: NP_123.LAS NP_1234.LAS 使用带有NP_???.LAS掩码的fmatch,我只得到NP_1234.LAS,而不是NP_123.LAS 下面是我正在运行的代码: def FindFiles(directory, pattern): flist=[] for root, dirs, files in os.walk(directory): for filename in

在Windows中,如果我运行:

方向NP_???.LAS

我得到2个文件:

NP_123.LAS

NP_1234.LAS

使用带有NP_???.LAS掩码的fmatch,我只得到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命令相同的文件列表,只使用一种模式?

您可以通过允许使用实际的正则表达式来提供更大的灵活性。正则表达式“[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
模块可以帮助您。