【问题标题】:Recursively searching for specific filenames in Python 3.x在 Python 3.x 中递归搜索特定文件名
【发布时间】:2016-12-19 10:30:28
【问题描述】:

我目前使用的是 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)

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

上述方法效果很好,但它需要一段时间,因为它需要处理每个目录中的数千个文件。

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

谢谢大家

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-12-09
      • 2023-03-28
      • 2019-07-08
      • 2018-07-11
      • 1970-01-01
      • 2019-10-02
      • 1970-01-01
      • 2020-02-08
      • 2022-01-04
      相关资源
      最近更新 更多