使用Python的os.walk()无法获取子文件夹中.txt文件名的问题求助
获取指定路径下所有子文件夹中的.txt文件问题解答
原代码为什么返回空结果?
next(os.walk(path))仅读取指定路径本身的目录信息,不会递归遍历子文件夹:
next(os.walk(path))[1]返回当前路径下的子文件夹列表,所以能得到正确结果next(os.walk(path))[2]返回当前路径下的直接文件列表,而你的.txt文件都在子文件夹里,因此返回空。
正确实现方法
方法1:用os.walk递归遍历所有目录
import os path = r'C:\test\2017\QTR1' txt_files = [] # 遍历所有子目录和文件 for root, _, files in os.walk(path): for file in files: if file.endswith('.txt'): # 拼接完整文件路径 txt_files.append(os.path.join(root, file)) print("所有.txt文件:", txt_files)
方法2:用glob模块简洁实现
glob支持递归匹配,代码更简洁:
import glob import os path = r'C:\test\2017\QTR1' # ** 匹配所有子目录,recursive=True开启递归 txt_files = glob.glob(os.path.join(path, '**', '*.txt'), recursive=True) print("所有.txt文件:", txt_files)
内容的提问来源于stack exchange,提问作者Ciercy
相关产品推荐
相关产品推荐

