如何高效地递归搜索子文件夹中的特定文件类型
编写脚本时,通常需要深入搜索主文件夹中的子文件夹。在Python中,os.walk函数可以递归地遍历目录。但是,仅提取特定类型的文件可能很棘手。
在提供的示例中,目标是创建主文件夹及其子文件夹中所有“.txt”文件的列表。代码使用 os.walk 迭代所有文件和子文件夹,但 subFolder 保存子文件夹列表,而不是每个文件的正确子文件夹。
要解决此问题,需要使用“root”变量,它表示当前应使用目录路径而不是子文件夹。每个文件都有其对应的根目录,表示其在文件系统中的位置。
这是一个优化的解决方案:
import os result = [os.path.join(dp, f) for dp, dn, filenames in os.walk(PATH) for f in filenames if os.path.splitext(f)[1] == '.txt']
此代码会迭代文件系统中的所有根目录、子目录和文件路径文件夹。带有“.txt”扩展名的文件将添加到结果列表中。
或者,glob 模块可以简化基于扩展名的选择:
from glob import glob result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]
对于 Python 3.4 ,更简洁的解决方案可以使用 Pathlib:
from pathlib import Path result = list(Path(".").rglob("*.[tT][xX][tT]"))
这些解决方案可以有效地搜索子文件夹,根据扩展名提取文件,并将它们作为列表返回。
以上是如何使用Python高效查找子文件夹中的所有'.txt”文件?的详细内容。更多信息请关注PHP中文网其他相关文章!