脚本运行报File Not Found Error但Jupyter Notebook正常,如何解决?
问题原因与解决方法
问题出在脚本运行时的当前工作目录和Jupyter Notebook的工作目录不一致:
- Jupyter启动时,默认会把工作目录设置为Notebook文件所在的文件夹,所以你的相对路径
data/movie_data.json能正确定位到文件。 - 但运行脚本时,当前工作目录是你执行脚本命令时所在的路径(比如你在桌面打开终端,运行
python ~/projects/script.py,此时工作目录是桌面,不是脚本所在的projects目录),导致相对路径失效。
解决办法
方法1:使用绝对路径(推荐)
通过__file__获取脚本的绝对路径,再拼接JSON文件路径,确保无论在哪运行都能找到文件:
import os import json # 获取脚本所在目录的绝对路径 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接JSON文件的完整路径 json_file_path = os.path.join(script_dir, "data", "movie_data.json") with open(json_file_path, "r") as j: word_map = json.load(j)
方法2:先切换工作目录
在脚本开头切换到脚本所在的目录,再用原来的相对路径加载文件:
import os import json # 切换到脚本所在的目录 os.chdir(os.path.dirname(os.path.abspath(__file__))) with open("data/movie_data.json", "r") as j: word_map = json.load(j)
内容的提问来源于stack exchange,提问作者Droid-Bird
相关产品推荐
相关产品推荐

