Python FileNotFoundError求助:运行app.py时无法找到test.json文件
问题描述
文件结构如下:
sample.py pack/ ├─ app.py └─ test.json
sample.py
from pack import app app.print_name()
app.py
import json def print_name(): with open(file=r"test.json",mode='r') as json_file : py_dict = json.load(json_file) print(py_dict["name"]) print_name()
test.json
{ "name" : "Rajkumar" }
直接执行命令python app.py时出现FileNotFoundError,请给出解决方法。
解决方案
问题根源
执行Python脚本时,程序使用的相对路径是基于你执行命令时的当前工作目录,而非脚本文件本身所在的目录。比如你在项目根目录执行python pack/app.py,当前工作目录是根目录,此时test.json的相对路径指向根目录下的文件,但实际该文件在pack目录中,因此触发找不到文件的错误。
可行解决方法
方法1:基于脚本路径动态拼接文件路径(推荐)
修改app.py,通过__file__变量获取脚本自身的绝对路径,再拼接test.json的路径,确保无论从哪个目录执行都能定位到文件:
import json import os def print_name(): # 获取当前脚本(app.py)所在的目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接test.json的完整路径 json_file_path = os.path.join(script_dir, "test.json") with open(file=json_file_path, mode='r') as json_file : py_dict = json.load(json_file) print(py_dict["name"]) print_name()
方法2:切换到脚本所在目录再执行命令
如果不想修改代码,可先进入pack目录后再执行脚本:
cd pack python app.py
也可以用单行命令完成:
cd pack && python app.py
方法3:使用绝对路径(不推荐)
直接在open函数中填写test.json的绝对路径,例如:
with open(file=r"/Users/xxx/your-project/pack/test.json", mode='r') as json_file :
此方法移植性差,更换环境或项目位置后需手动修改路径,不建议使用。
内容的提问来源于stack exchange,提问作者Rajkumar V.B
相关产品推荐
相关产品推荐

