在Python 3.x中递归搜索特定的文件名

the*_*men 2 python python-3.x

我目前正在使用Python 3.x. 我希望递归搜索目录中的两个特定文件名.我知道这两个文件名中的每一个都存在于某些目录中.如果其中一个文件存在,则另一个文件存在.一旦文件被识别出来,我就想把它们提取到一个列表中但不知何故将它们链接起来以便以后我可以一起处理它们,因为我想从两个文件中的每一个中提取数据并分析这些数据然后,做相同但是对于来自不同目录的相同文件,如果这是有意义的.因此,例如,在C:\ DesktopC:\ MyDocuments中,每个目录将包含我要识别的两个文件名(manifest.plist和info.plist)

到目前为止,我有以下搜索基于文件扩展名而不是文件名: -

def find(pattern, path):
    result = []
    for root, dirs, files in os.walk(path):
        for name in files:
            if fnmatch.fnmatch(name, pattern):
                result.append(os.path.join(root, name))

if __name__=='__main__':
    find("*.plist", test_path)
Run Code Online (Sandbox Code Playgroud)

确切的文件名是manifest.plistinfo.plist.

上面的方法运行良好,但它需要一个年龄,因为它通过每个目录中的数千个文件.

有没有办法根据特定的名称快速查找文件,同样,我如何最好地链接列表中每个目录的两个文件?我正在考虑使result []列表包含元组,每个元组包含相应info.plistmanifest.plist的路径

谢谢大家

iCa*_*art 5

您应该使用该glob模块,特别是glob.iglob(pathname, recursive=True)对于大型目录.