Python中使用append模式调用open()抛出[Errno 2]文件不存在异常
问题描述
调用fileManager.saveNewLine(result_line, results_path, "a")时抛出异常:[Errno 2] No such file or directory...,相关细节如下:
调用代码
fileManager.saveNewLine(result_line, results_path, "a")
fileManager实现代码
def saveNewLine(text, path, mode): hs = open(path, mode) #<-- 抛出异常位置 hs.write(text + "\n") hs.close()
文件路径
'ml_models/signals/results/model-training-1h-Core-hourly-True-True-True-0.2-1-9-500-32-1-0.2-1-5-lstm-relu-linear-5000-300-10-10-250-250-6000-14-13000-col--MlModel-time-2023-01-14_23-12-24.301759.txt'
已知信息:
- 路径长度198字符,未超出常规限制
- 父目录
ml_models/signals/results确认存在 - 切换为
"w"模式仍报相同错误 - 按Python文档,
"a"/"w"模式应在文件不存在时自动创建
排查与解决方法
确认代码运行的工作目录
相对路径是基于当前工作目录解析的,可能和你预期的不一致。在调用saveNewLine前打印当前目录验证:import os print(os.getcwd())如果目录不符,要么用
os.chdir()切换到正确目录,要么直接使用绝对路径。检查路径字符串的合法性
排查路径中是否存在隐藏的转义字符(如\n、\t)或拼写错误,打印原始路径形式确认:print(repr(results_path))验证目录写入权限
确认运行程序的用户对ml_models/signals/results目录有写入权限——手动在该目录创建同名文件,看是否能成功。修改函数确保父目录存在并优化文件操作
即使父目录存在,也可以通过代码兜底确保路径完整性,同时改用with语句自动管理文件句柄:import os def saveNewLine(text, path, mode): # 创建所有不存在的父目录 os.makedirs(os.path.dirname(path), exist_ok=True) with open(path, mode) as hs: hs.write(text + "\n")测试绝对路径
把相对路径转换为绝对路径后再测试,排除相对路径解析的问题:absolute_path = os.path.abspath(results_path) fileManager.saveNewLine(result_line, absolute_path, "a")
内容的提问来源于stack exchange,提问作者bakunet
相关产品推荐
相关产品推荐

