如何解决Python加载自定义config.json时的文件路径问题?
问题原因
你遇到的问题确实是工作目录导致的:open("config.json") 里的相对路径是相对于当前运行脚本的工作目录,而非public.py所在的目录。
- 运行
test1.py时,工作目录是base,能直接找到同级的config.json - 运行
test2.py时,工作目录是base/dir1,脚本会在dir1目录下查找config.json,自然找不到目标文件
解决方案
修改public.py,让它基于自身文件的位置来定位config.json,这样不管哪个脚本调用,路径都能正确解析:
import os import json def getCfg(key): # 获取当前脚本(public.py)所在的绝对目录 public_dir = os.path.dirname(os.path.realpath(__file__)) # 拼接config.json的绝对路径 config_path = os.path.join(public_dir, "config.json") with open(config_path, 'r', encoding='utf-8') as f: cfg = json.load(f) return cfg[key]
验证说明
修改后:
test1.py的代码无需改动,直接运行依然正常test2.py的代码也无需改动,运行时会通过public.py生成的绝对路径找到base目录下的config.json
另外注意:原public.py未显式导入json模块,之前运行test1.py没报错可能是依赖其他模块的隐式导入,显式添加import json能避免潜在的运行错误。
内容的提问来源于stack exchange,提问作者user2155362
相关产品推荐
相关产品推荐

