【发布时间】:2018-10-12 11:36:01
【问题描述】:
我正在尝试构建相对路径。在我的 .py 脚本中运行以下行时
this_path = os.path.abspath(os.path.dirname(__file__))
我收到一个名称错误。几天前我设置它时它曾经工作过,但现在它不再工作了。我没有在我的 shell 中执行这个,只是像往常一样运行我的脚本。
os.path.dirname(sys.argv[0])
只返回一个空字符串。当我使用"__file__"
相反,它返回主目录而不是我的文件的路径。我以为__file__ 在我的脚本中加载模块后立即设置为文件路径。有谁知道我哪里出错了?
更多信息:我的 .py 脚本位于“C:/Users/corr/Documents/Uni/Thesis/Code/”的文件夹中我想构建一个相对路径,以便可以访问文件夹“C”中的数据文件:/Users/corr/Documents/Uni/Thesis/Data/"。当我设置脚本时,以下几行起作用:
this_path = os.path.abspath(os.path.dirname(__file__))
path = os.path.join(this_path, "../Data")
现在,当我运行第一行时,我得到一个 NameError: __file__ not defined。当我使用"__file__" 运行同一行时,它返回“C:\Users\corr”。另外,我在 Spyder 环境中执行我的脚本,因为这是我通常工作的地方。
【问题讨论】:
-
请提供更多信息:如目录结构、传递给运行脚本的命令等。
-
运行脚本的命令行是什么?
-
感谢您的宝贵时间。不幸的是,我不知道——我使用 Spyder 环境,只要我想运行我的脚本就按 F5(Spyder 使用 IPython)。你的问题给我带来了一个不同的解决方案——使用外部系统终端而不是 IPython:stackoverflow.com/questions/52117759/…
-
设置失败时,
sys.argv[0]返回一个空字符串''。 (类型为 str) -
(这里是 Spyder 维护者) 这看起来像一个错误,但在 Spyder 中没有,但可能在 IPython/ipykernel 中。如果您想解决这个问题,请在我们的issues tracker 中提出问题。