繁体   English   中英

在目录中搜索文件的最快方法-Python

[英]Fastest way to search files in a directory -Python

我有多个目录,每个目录都有成千上万的文件(10k +)。让我们选择一个目录, A有10k个文件。 我有另一个目录(称其为B ),其中包含成千上万个文件。 我正在尝试查找同时出现在AB并且具有特定文件扩展名的所有文件(假设.docx )。 我可以轻松地应用嵌套的for循环,但是由于文件数以千计,所以需要很多时间。 python中有没有更快的方法来执行它? 您要建议的任何特定算法或摘要代码?

注意-我知道如何以多种方式搜索和获取文件,我要求提供最快的方法的建议,文件以百万为单位,一次又一次地循环遍历将花费资源。

在python中比较目录的规范方法似乎是filecmp.dircmp()

cmp = filecmp.dircmp('/path/to/A', '/path/to/B')
matchingfiles = [filename for filename in cmp.common_files if filename.endswith('.docx')]

我不会说明具体到它的性能,但我认为它的方式,将更有效率比嵌套实现for循环。

您可以这样:

import os
[x for x in os.listdir('A') if x.endswith('.docx')]

这将在“ A”文件夹中选择“ .docx”文件。

尝试使用glob模块:

import glob
glob.glob('/*')

输出(Ubuntu 18.04):

['/bin', '/boot', '/cache', '/data', '/dev', '/etc', '/home', '/init', '/lib', '/lib64', '/media', '/mnt', '/opt', '/proc', '/root', '/run', '/sbin', '/snap', '/srv', '/sys', '/tmp', '/usr', '/var']

当然,您可以使用其他方法:

glob.glob("*.docx")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM