Python open()读取同目录warn.json提示不存在如何解决
Python读取同目录JSON文件触发FileNotFoundError修复
问题表现
warn.json与执行脚本存放在同一文件夹下,运行代码时仍抛出文件不存在的错误- 目录结构参考:

- 报错信息参考:

- 触发报错的代码段:
with open('warn.json', 'r', encoding='utf-8') as f: guilds_dict = json.load(f) if str(id) in guilds_dict: guilds_dict[str(id)] += warns else: guilds_dict[str(id)] = warns
根因说明
Python解析相对路径时,基准路径是程序启动时的工作目录,不是脚本文件自身的存放目录。
常见触发场景:
- 在IDE中运行脚本,IDE默认工作目录配置为项目根目录,而非脚本所在子目录
- 终端中切换到其他路径后,通过脚本的绝对路径执行代码
- 脚本被其他路径下的入口程序调用启动
修复方法
通过内置os模块获取当前脚本的绝对存放路径,再拼接目标JSON文件名,彻底脱离工作目录的影响。
修复后可正常运行的代码:
import os import json # 取当前脚本文件的所在目录绝对路径 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接得到warn.json的完整绝对路径 target_json_path = os.path.join(script_dir, 'warn.json') with open(target_json_path, 'r', encoding='utf-8') as f: guilds_dict = json.load(f) if str(id) in guilds_dict: guilds_dict[str(id)] += warns else: guilds_dict[str(id)] = warns
排查辅助
如果需要确认当前Python进程的实际工作目录,可在打开文件前添加如下代码打印路径,打印出的位置就是Python查找warn.json的实际位置:
import os print("当前工作目录:", os.getcwd())
内容的提问来源于stack exchange,提问作者user15558580
相关产品推荐
相关产品推荐

