You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

为何Python终端提示top_secret_file.dat文件不存在?Spyder可正常运行的代码复制到Jupyter Notebook后出现FileNotFoundError

为什么Jupyter Notebook会提示文件不存在,而Spyder却正常运行?

这事儿核心原因其实很直白:Spyder和Jupyter Notebook的默认工作目录不一样

当你在Spyder里跑代码时,它默认的工作目录就是你脚本所在的文件夹,所以能顺利找到top_secret_file.dat;但Jupyter启动时的默认目录通常是你的用户主目录(比如Windows下的C:\Users\你的用户名,Mac/Linux下的/home/你的用户名),如果你的.dat文件没放在这个目录里,自然就会触发找不到文件的报错。

下面给你几个实用的解决办法,按操作复杂度排序:

方法1:直接使用文件的绝对路径

把代码里的文件名改成完整的绝对路径,让Python直接定位到文件位置,比如:

# Windows系统示例(注意加r前缀避免转义问题)
f = open(r"D:\my_python_projects\top_secret_file.dat", "rb")

# Mac/Linux系统示例
f = open("/Users/你的用户名/my_projects/top_secret_file.dat", "rb")

方法2:启动Jupyter时切换到项目目录

每次打开Jupyter前,先打开命令行(CMD或终端),用cd命令切换到你的项目文件夹,再运行jupyter notebook命令。这样Jupyter的工作目录就和你的文件所在目录一致,代码里直接用文件名就行。

方法3:在Jupyter里动态切换工作目录

在Notebook的第一个单元格里运行这段代码,手动切换到你的项目文件夹:

import os
# 替换成你的文件所在文件夹的绝对路径
os.chdir("D:\my_python_projects")
# 可以验证当前目录是否正确
print(os.getcwd())

运行完这个单元格后,再执行读写文件的代码就不会报错了。

另外顺便提个小建议:读写文件时最好用with语句,不用手动调用close(),代码更安全规范:

import pickle

# 写入文件
my_var = {None:None}
with open("top_secret_file.dat", "wb") as f:
    pickle.dump(my_var, f)

# 读取文件
with open("top_secret_file.dat", "rb") as f:
    my_var = pickle.load(f)

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

火山引擎 最新活动