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

如何在Python中基于脚本相对路径加载文件?

跨目录运行Python脚本时的文件路径加载问题

目录结构

./outputsetting.json
./myapp/app.py

问题场景

现有app.py中加载配置文件的代码如下:

with open("..\outputpath.json","r") as f:
    j=json.load(f)
  • 在myapp目录下执行python app.py,代码正常运行
  • 在父目录下执行python .\myapp\app.py,触发错误:
FileNotFoundError: [Errno 2] No such file or directory: '..\\outputpath.json'

需求:基于app.py自身的位置加载文件,实现任意目录下运行脚本都无需修改代码。

解决方案

核心逻辑是:先获取脚本自身的绝对路径,再以此为基准拼接配置文件路径,彻底摆脱运行时工作目录的影响。

推荐实现代码

修改app.py中的代码如下:

import os
import json

# 获取当前脚本的绝对路径
script_abspath = os.path.abspath(__file__)
# 获取脚本所在的目录
script_dir = os.path.dirname(script_abspath)
# 拼接配置文件的路径:脚本目录的父目录 + 目标文件名
config_path = os.path.join(script_dir, "..", "outputsetting.json")
# 规范化路径,自动处理../这类相对标记
config_path = os.path.normpath(config_path)

with open(config_path, "r") as f:
    j = json.load(f)

注意事项

  • 你原代码中配置文件名写的是outputpath.json,但实际文件是outputsetting.json,已在代码中修正,需保持文件名一致
  • os.path.normpath会将路径转为系统标准格式,避免跨平台路径问题
  • 无论从哪个目录执行脚本,该方法都能精准定位到配置文件

内容的提问来源于stack exchange,提问作者user2155362

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:15:37