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
相关产品推荐
相关产品推荐

