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

加载JSON配置文件时遭遇Python FileNotFoundError的问题求助

加载JSON配置文件时遭遇Python FileNotFoundError的问题求助

嗨,看起来你的问题主要出在文件名拼写错误和路径处理的小细节上,咱们一步步拆解解决:

一、核心问题:文件名不匹配

你代码里写的路径是 defmet_common/configs/config.edi_db_servers.json,但从文件管理器复制的真实路径是 defmet_common\configs\config.edi.db_servers.json —— 这里的关键差异是文件名里的 edi_db 和 edi.db:一个是下划线,一个是点!

系统里真实存在的文件是带点的版本,而你代码里写的是带下划线的,这直接导致Python找不到对应的文件,这是最可能的报错原因。

二、路径分隔符的小坑(次要但需要注意)

Windows系统默认用反斜杠 \ 作为路径分隔符,而Python字符串里的反斜杠是转义字符,如果你直接复制管理器里的路径,需要把反斜杠改成双反斜杠 \\,或者直接用正斜杠 /(Python在Windows上也能识别正斜杠)。不过这个问题在你这里是次要的,核心还是文件名的错误。

三、解决方案

1. 先修正文件名

直接把代码里的路径改成真实的文件名:

# 跨平台友好的正斜杠版本
file_path = "defmet_common/configs/config.edi.db_servers.json"
# 或者Windows专用的双反斜杠版本
file_path = "defmet_common\\configs\\config.edi.db_servers.json"

2. 用更可靠的路径处理方式(推荐)

建议使用Python 3.4+自带的pathlib模块来处理路径,它能自动适配不同操作系统的分隔符,还能帮你快速验证路径是否存在:
修改你的load_config函数如下:

from pathlib import Path
import json

def load_config(self, file_path):    
    # 把字符串路径转为Path对象
    config_file = Path(file_path)
    try:    
        # 用Path对象的open方法打开文件
        with config_file.open('r', encoding='utf-8') as file:    
            data = json.load(file)    
            self.config_data.update(data)    
    except FileNotFoundError:    
        # 打印绝对路径,方便你确认代码实际查找的位置
        print(f"File not found: {config_file.resolve()}")
    except json.JSONDecodeError:    
        print(f"Invalid JSON format: {config_file.resolve()}")

3. 验证当前工作目录

有时候你以为脚本是从某个目录运行的,但实际IDE或者终端的工作目录可能不一样。可以在代码开头加一行,确认当前工作目录:

import os
print("Current working directory:", os.getcwd())

如果输出的目录不是包含defmet_common的那个目录,你可能需要调整脚本的运行路径,或者使用绝对路径来加载配置文件。

总结

先优先修正文件名里的下划线/点错误,这应该能直接解决FileNotFoundError;之后用pathlib来管理路径,可以避免很多跨平台和路径拼写的坑,也方便排查问题。

备注:内容来源于stack exchange,提问作者chani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 17:18:09