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

Python遍历目录文件时,除首个文件外均报FileNotFoundError

遍历目录YAML文件时第二个循环触发FileNotFoundError问题

我编写了一个脚本,用于遍历指定目录下的YAML文件——脚本与目标目录位于同一路径,目录名通过命令行参数传入。脚本会逐个打开YAML文件,读取内容转为字典后调用自定义方法。第一个文件处理完全正常,但从第二个循环开始,Python在打开文件的代码行抛出FileNotFoundError: [Errno 2] No such file or directory错误。

初始报错代码

config_dir = args.param # 存放YAML文件的目录
config_file_names = os.listdir(config_dir)  # 文件列表

for config_file_name in config_file_names:
    config_file_path = os.path.join(config_dir, config_file_name) # 拼接文件路径
    with open(config_file_path) as f:  # 第二个循环报错的行
        print(config_file_path)
        config = yaml.load(f, Loader=SafeLoader)
    --------------- 其他代码 ---------------

添加continue后正常运行的代码

parser = argparse.ArgumentParser()

parser.add_argument("-p", "--param", help="Path to parameter file directory", required=True)

args = parser.parse_args()

config_dir = args.param # 存放YAML文件的目录
config_file_names = os.listdir(config_dir)  # 文件列表

for config_file_name in config_file_names:
    config_file_path = os.path.join(config_dir, config_file_name) # 拼接文件路径
    with open(config_file_path) as f:
        print(config_file_path)
        config = yaml.load(f, Loader=SafeLoader)
        continue # 添加此行后问题解决
    --------------- 其他代码 ---------------

排查情况

  • 最初怀疑是路径拼接错误,改用config_dir + "/" + config_file_name拼接路径后问题依旧
  • 添加continue跳过后续代码后,脚本可正常遍历所有文件,控制台打印的所有文件路径均正确
  • 通过PyCharm引用搜索确认,config_dir、config_file_names、config_file_name、config_file_path这些相关变量未被任何代码修改
  • 移除第一个文件后,错误会出现在原第三个文件(此时成为第二个待处理文件)
  • 两台机器(家用PC和服务器集群)上表现一致,使用Python 3.9.13版本
  • 后续代码仅使用YAML加载得到的字典config中的内容

内容的提问来源于stack exchange,提问作者grimbar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:13:27