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

5

设置

我在我的电脑上运行一个脚本,该脚本位于目录 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(),但这是一个获取当前文件目录的代码。

我主要发现类似这个答案,其中说:

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

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

我该怎么办?


这可能是因为您正在ipthon命令行中的一部分代码。因此,命令行没有__file__属性。请使用播放按钮运行整个脚本,应该就可以正常了。 - anishtain4
4个回答

1
如果您想要回到上一级文件夹/目录,可以在文件路径中使用 ..

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

会起作用。您可能会发现查看thiswiki有帮助。 如果您想要从当前位置移动,可以使用'./new_dir/'。如果您想自动化查找其他文件的方式,您可能需要阅读此处,其中建议使用os.walk这个可能是同样的问题。


1

Mark8888 指出,应运行整个脚本(运行文件(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())

0
我会在运行任何脚本时添加以下几行代码,以便在需要访问与脚本位置相关的数据时使用。
import sys
script = sys.argv[0]
print(script)
'C:/SomeFolder/A_Subfolder/CurrentlyRunningScript.py'  # changed obviously

谢谢你和我一起思考。你的解决方案对我不起作用,它给了我一个 script = '' - LucSpan
只有在从Python IDE内运行脚本时才有效,我猜您是通过启动python.exe 'c:/somescript.py'来实现的。 - NaN

-2

首先,保存你的Jupyter Notebook。其次,找到存储Jupyter Notebook的目录。第三步,确保你的Jupyter Notebook和CSV文件在同一个位置。


OP正在询问如何在Spyder中获取当前文件路径,而不是在笔记本中。 - Carlos Cordoba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接