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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:54:36