如何在Spyder(Anaconda)中找到当前.py文件的路径?

时间:2018-05-07 14:22:40

标签: python anaconda spyder

设置向上

我在我的计算机上运行一个脚本,该脚本位于Users/path/to/my/script.py目录中。

在脚本中,我使用脚本的路径,例如,

sub_path = 'Users/path/to/my/'
os.chdir(sub_path + 'other_script/') 

如您所见,我在代码中“手动”定义sub_path

问题

我不想手动定义sub_path,我宁愿让Python为我做。

我正在寻找类似于我用来获取当前工作目录的代码:os.getcwd(),但后来获取当前文件目录的代码。

我主要找到与this one相似的答案,其中说明了

os.path.abspath(os.path.dirname(__file__))

但在Spyder& Anaconda设置,这会生成NameError: name '__file__' is not defined

我该怎么办?

4 个答案:

答案 0 :(得分:1)

如果要在文件路径中使用..移回一个文件夹/目录,则可以。

os.chdir('../other_scripts/')

会奏效。您可以查看thisthe wiki。 如果您想从当前的位置移动,可以使用'./new_dir/'。如果您想自动查找其他文件的方法,可以阅读here,其中包含使用os.walk的内容。 This可能是同一个问题。

答案 1 :(得分:1)

Mark8888 pointed out 来运行整个脚本(运行文件 (F5))而不是脚本的一部分

这种方式应该可以使用多种方法来获取脚本文件位置并更改当前工作目录

import os
# directory of script file
print(os.path.abspath(os.path.dirname(__file__)))
# change current working directory
os.chdir(os.path.abspath(os.path.dirname(__file__)))
# current working directory
print(os.getcwd())

还有

import os
import sys
# directory of script file
print(os.path.abspath(os.path.dirname(sys.argv[0])))
# change current working directory
os.chdir(os.path.abspath(os.path.dirname(sys.argv[0])))
# current working directory
print(os.getcwd())

答案 2 :(得分:0)

我将以下行添加到我运行的任何脚本中,以防我需要访问相对于脚本位置的数据

import sys
script = sys.argv[0]
print(script)
'C:/SomeFolder/A_Subfolder/CurrentlyRunningScript.py'  # changed obviously

答案 3 :(得分:-1)

首先,保存您的Jupyter Notebook。第二,找到Jupyter Notebook的存储目录。第三,确保Jupyter Notebook和CSV文件位于同一位置。