Python遍历文件夹获取指定扩展名文件路径失败求助
排查文件遍历失败的原因及解决方法
针对你的问题,以下是几个核心排查方向和解决步骤:
1. 起始路径错误(最常见原因)
你的代码中os.walk("Assignment8")的起始路径和实际文件夹结构不匹配,后续修改的Desktop/python 2/FOLDER也可能存在路径格式问题:
- 相对路径问题:如果
main.py在FOLDER文件夹内运行,当前工作目录默认是FOLDER,此时应该用"./"(遍历当前目录及子目录)或"contents"(仅遍历contents子目录)作为起始路径,而非Assignment8。 - 绝对路径格式错误:若使用绝对路径,需根据系统补全完整路径:
- Mac/Linux:
"/Users/你的用户名/Desktop/python 2/FOLDER" - Windows:
r"C:\Users\你的用户名\Desktop\python 2\FOLDER"(用原始字符串避免转义问题)
- Mac/Linux:
- 验证当前工作目录:在函数开头添加
print(os.getcwd()),确认运行代码时的实际工作目录,再调整起始路径。
2. 文件扩展名参数不匹配
file.endswith(file_extension)是严格匹配的:
- 若要找
.txt文件,必须传入参数".txt",而非"txt"。如果传"txt",yob1880.txt的结尾是.txt,不会被匹配到。
3. 调试代码确认遍历过程
在代码中添加调试输出,明确遍历到的目录和文件,快速定位问题:
import os def retrieve_files(file_extension): file_paths = [] print("当前工作目录:", os.getcwd()) # 先以当前目录为起始路径测试 for root, dirs, files in os.walk("."): print(f"遍历目录: {root} | 包含文件: {files}") for file in files: if file.endswith(file_extension): file_paths.append(os.path.join(root, file)) return file_paths # 调用示例(确保扩展名带点) print(retrieve_files(".txt"))
运行后查看输出,就能知道是否遍历到了contents/baby_names目录,以及目标.txt文件是否在文件列表中。
4. 排除权限问题(少见但需注意)
如果文件夹位于系统受保护目录,可能存在读取权限限制,但Desktop下的文件夹一般不会有这个问题,可暂时排除。
内容的提问来源于stack exchange,提问作者doskitele
相关产品推荐
相关产品推荐

