在python 3中搜索文件的有效方法

时间:2019-06-15 06:24:39

标签: windows-8 search mp3 python-3.x

嗨,我正在尝试搜索计算机上的所有.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 

1 个答案:

答案 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还要快。