在Python 3.x

时间:2016-08-12 12:00:23

标签: python python-3.x

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

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

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

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

全部谢谢

1 个答案:

答案 0 :(得分:5)

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