You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:16:24