我正在编写一个脚本,用于递归遍历主文件夹中的子文件夹并根据特定文件类型构建列表。我在使用该脚本时遇到了问题。当前设置如下:
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 循环,然后加入路径的第一部分,但我想在那之前再检查一下是否有人有什么建议。
subFolder
您的问题是由于 os.walk() 的行为导致的。正如您提到的,subFolder 实际上是子文件夹的列表,而不是 ITEM 文件所在的文件夹名称。
os.walk()
在 Python 中,os.walk() 返回三个值: - root:当前遍历的目录路径。 - dirs(或 subFolder):一个子目录名称的列表(仅名称)。 - files:一个文件名称的列表(仅名称)。
root
dirs
files
所以,您不需要使用 subFolder 来构建文件的完整路径。相反,您应该使用 root 和 item 来形成每个文件的正确路径。
item
您可以按以下方式修改您的脚本:
import os # 替换为您的主文件夹路径 PATH = 'your_directory_path' file_list = [] # 初始化一个空列表以存储文件路径 # 递归遍历目录 for root, subFolders, files in os.walk(PATH): for item in files: if item.endswith(".txt"): fileNamePath = os.path.join(root, item) # 构建完整的文件路径 file_list.append(fileNamePath) # 将文件路径添加到列表中 # 打印结果 print(file_list)
os.path.join(root, item)
file_list
.txt
将 'your_directory_path' 替换为您的主文件夹路径。脚本将递归搜索所有子目录,并列出所有 .txt 文件。
'your_directory_path'