为何在Spyder中无法使用__file__变量?
解决Python获取当前文件目录并设置工作目录的问题
为什么__file__会报错?
__file__变量仅在脚本文件(.py)被直接运行或作为模块导入时才会被定义。如果是在Python交互式Shell、Jupyter Notebook这类环境中执行代码,__file__不存在,就会抛出'name '__file__' is not defined'的错误。
脚本文件中的正确实现
如果你的代码是保存在.py文件中运行,用以下代码就能获取文件所在目录并设置为工作目录:
import os # 获取当前脚本的绝对路径 script_full_path = os.path.abspath(__file__) # 提取脚本所在的目录 script_dir = os.path.dirname(script_full_path) # 将工作目录切换到脚本所在目录 os.chdir(script_dir)
兼容交互式环境的方案
如果需要代码在脚本和交互式环境都能运行,可以通过异常处理兼容两种场景:
import os try: # 脚本模式下获取目录 script_dir = os.path.dirname(os.path.abspath(__file__)) except NameError: # 交互式环境下使用当前工作目录(也可手动指定固定路径) script_dir = os.getcwd() os.chdir(script_dir)
内容的提问来源于stack exchange,提问作者AccidentalTaylorExpansion
相关产品推荐
相关产品推荐

