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

Efficient way to search for files in python 3

您好,我正在尝试搜索我计算机上的所有 .mp3 文件,我有一个代码将 .mp3.txt 等文件类型作为一个输入和文件夹路径作为其他输入并搜索指定路径中的所有子文件夹和文件夹本身的文件类型和 returns 列表中文件的路径,如果文件夹有这样的话,这需要一些时间许多子文件夹,或者如果我给出一个驱动器名称作为 'path' 的输入。我需要一种有效的方法来做到这一点。如果我先搜索一个文件夹中的所有子文件夹,然后将子文件夹路径传递给该函数,它会工作得更快吗?

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 

我认为这足够有效... 命令 where.exe /R C:\ *.mp3 将与您的 python 脚本完全相同。 而且您的脚本比内置的 windows 命令更快,因此它应该足够高效。 我不知道这是否是您的确切问题,如果不是,我认为您不清楚您的真正意思。

顺便说一下,您可以使用这段代码来实时打印结果:

import os
from fnmatch import fnmatch


def find(pattern, path):
    for root, dirs, files in os.walk(path):
        for name in files:
            if fnmatch(name, pattern):
                yield os.path.join(root, name)

不同之处在于,如果您执行

for i in find('*.mp3', 'C:\'):
    print(i)

它将尽快打印每个结果。 当操作完成时,您的脚本将 return 整个列表,而此脚本将直接打印。

我不知道如何更好地解释它,因为我的英语不是最好的,但你可以尝试一下,看看有什么不同。

顺便提一下,它仍然比 windows 内置命令快。