gpt4 book ai didi

python - 如何进行递归子文件夹搜索并返回列表中的文件?

转载 作者:IT老高 更新时间:2023-10-28 21:11:41 26 4
gpt4 key购买 nike

我正在编写一个脚本,以递归方式遍历主文件夹中的子文件夹,并根据某种文件类型构建一个列表。我的脚本有问题。目前设置如下:

for root, subFolder, files in os.walk(PATH):
for item in files:
if item.endswith(".txt") :
fileNamePath = str(os.path.join(root,subFolder,item))

问题在于 subFolder 变量拉入的是子文件夹列表,而不是 ITEM 文件所在的文件夹。我之前正在考虑为子文件夹运行一个 for 循环并加入路径的第一部分,但我想我会仔细检查是否有人在此之前有任何建议。

最佳答案

您应该使用您称为 rootdirpath。提供了 dirnames,因此如果存在您不希望 os.walk 递归到的文件夹,您可以对其进行修剪。

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']

编辑:

在最近一次投票后,我突然想到 glob 是一个更好的按扩展选择的工具。

import os
from glob import glob
result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]

也是一个生成器版本

from itertools import chain
result = (chain.from_iterable(glob(os.path.join(x[0], '*.txt')) for x in os.walk('.')))

Edit2 for Python 3.4+

from pathlib import Path
result = list(Path(".").rglob("*.[tT][xX][tT]"))

关于python - 如何进行递归子文件夹搜索并返回列表中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18394147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com