嗨,我正在尝试搜索计算机上的所有.mp3
文件,并且我有一个代码将.mp3
,.txt
等文件类型作为一个输入,文件夹路径作为其他输入,并在指定路径中的所有子文件夹中搜索,并在文件夹本身中搜索文件类型,并在列表中返回文件的路径,如果该文件夹有太多子文件夹,或者如果我提供驱动器名称作为“路径”的输入。我需要一种有效的方法来做到这一点。如果我先搜索文件夹中的所有子文件夹,然后将子文件夹路径传递给该函数,它将更快地工作吗?
import os
import fnmatch
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))
return result
答案 0 :(得分:0)
我认为这足够有效...
命令where.exe /R C:\ *.mp3
与您的python脚本完全相同。
而且您的脚本比内置的Windows命令更快,因此它应该足够有效。
我不知道这是否是您的确切问题,如果不是,我想您的意思还不清楚。
通过这种方式,您可以使用以下代码来实时打印结果:
import os
import fnmatch
def find(pattern, path):
for root, dirs, files in os.walk(path):
for name in files:
if fnmatch.fnmatch(name, pattern):
yield os.path.join(root, name)
不同之处在于,例如您这样做
for i in find('*.mp3', 'C:\\'):
print(i)
它将尽快打印每个结果。 操作完成后,您的脚本将返回整个列表,而该脚本将直接打印。
我不知道如何更好地解释它,因为我的英语不是最好的,但是您可以尝试一下,看看有什么不同。
它仍然比内置命令的Windows还要快。