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

Python中如何返回上一级目录?跨目录读取文件报错求助

解决相对路径访问文件的FileNotFoundError问题

你遇到的是Python相对路径解析的常见坑——Python的相对路径是基于当前工作目录(也就是你启动脚本时所在的目录),而不是你写代码的脚本文件所在的目录!

先明确你的目录结构:

  • 项目根目录
    • bot_data/
      • users_info.json
    • cogs/
      • economy.py

你写的../bot_data/users_info.json是站在economy.py的位置往上级找,但如果你的启动脚本是从项目根目录运行的(比如执行python main.py,main.py在根目录),那当前工作目录是根目录,这时候../会指向根目录的上级文件夹,自然找不到bot_data。

给你两个靠谱的解决方案:

方案一:基于脚本位置构建绝对路径(推荐)

这种方法完全不依赖工作目录,不管你从哪里启动程序都能精准找到文件。

用os模块实现:

import os
import json

# 获取economy.py所在的绝对目录
current_script_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接出users_info.json的路径:上级目录 -> bot_data -> users_info.json
target_file = os.path.join(current_script_dir, "../bot_data/users_info.json")
# 把路径转为绝对路径,避免层级解析问题
target_file = os.path.abspath(target_file)

with open(target_file) as f:
    users_info = json.load(f)

用pathlib实现(Python 3.4+更简洁):

from pathlib import Path
import json

# 获取当前脚本的绝对路径
current_script = Path(__file__).resolve()
# 往上跳一级到项目根目录,再找到bot_data下的文件
target_file = current_script.parent.parent / "bot_data" / "users_info.json"

with open(target_file) as f:
    users_info = json.load(f)

方案二:使用相对于工作目录的路径(仅固定从根目录启动时可用)

如果你的程序永远从项目根目录启动,那直接用根目录下的相对路径就行:

import json

with open("bot_data/users_info.json") as f:
    users_info = json.load(f)

但这个方法局限性很大,一旦有人从其他目录启动程序,就会再次报错,所以更推荐方案一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:48:45