NameError:__file__未定义

时间:2018-10-12 11:36:01

标签: python filepath spyder

我正在尝试建立相对路径。在我的.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”文件夹中的数据文件:/用户/ corr /文档/ Uni /论文/数据/”。当我设置脚本时,以下几行有效:

this_path = os.path.abspath(os.path.dirname(__file__))
path = os.path.join(this_path, "../Data")

现在,当我运行第一行时,我得到一个NameError:__file__未定义。当我用"__file__"运行同一行时,它返回“ C:\ Users \ corr”。另外,我正在Spyder环境中执行脚本,因为这是我通常的工作方式。

1 个答案:

答案 0 :(得分:0)

app.post('/add-project', function(req, res){ var subtasks = []; var subtasks = req.body.subtasks; console.log(subtasks[0].subtaskname); }); set for modules,而不是应该使用__file__的脚本。 (在某些情况下,sys.argv[0]是用于通过argv[0]查找程序的基本名称。)Spyder显然将其设置为空字符串(或者在一个{{3 }}将PATH设置为空的 list ),因此您可能需要做一些愚蠢的事情,如

argv

同时,使用def f(): pass print(f.__code__.co_filename) (字符串文字)仅表示该名称的文件。 "__file__"为此返回一个空字符串(因为它没有斜杠),许多Python函数(如path.dirname)将其解释为当前工作目录(对于Spyder来说,显然是您的主目录)。 / p>