使用os.walk遍历子目录文件时调用open()报错的问题求助
解决os.walk()获取文件后open报错的问题
你猜的完全没错!问题核心就是你只拿到了纯文件名,而open()函数默认会在当前工作目录下查找文件,而非你遍历到的目标子目录,自然会抛出“文件或目录不存在”的错误。
os.walk()返回的第一个元素dirpath,就是当前遍历到的目录的完整路径——你需要把它和文件名拼接起来,才能得到文件的完整访问路径。这里强烈推荐用os.path.join()来做拼接,它会自动适配不同操作系统的路径分隔符(比如Windows的\和Linux的/),避免手动拼接出现兼容性问题。
给你修正后的代码示例:
import os list_of_files = [] # 如果是单纯存储文件路径,用列表更合适;如果要做文件名-路径映射,可改用字典 for (dirpath, dirnames, filenames) in os.walk("/你的主目录路径"): for filename in filenames: # 拼接生成完整文件路径 full_file_path = os.path.join(dirpath, filename) list_of_files.append(full_file_path) # 现在用完整路径打开文件就不会报错了 with open(full_file_path, 'r') as f: # 这里写你的文件处理逻辑,比如读取内容 content = f.read() print(content[:100]) # 示例:打印文件前100个字符
几个小提醒:
- 务必用
os.path.join()拼接路径,别手动用+或加分隔符,跨系统运行时容易出问题 - 优先用
with语句打开文件,它会自动帮你关闭文件,避免资源泄漏 - 如果你的
list_of_files是要实现“文件名-路径”的映射,可改用字典存储,但要注意:不同目录下的同名文件会覆盖原有条目,这种情况可以考虑用文件完整路径作为键,或者额外标记目录信息
内容的提问来源于stack exchange,提问作者Akarsh Bhagavath
相关产品推荐
相关产品推荐

