在Python / Spyder中设置工作目录,以便它可以重现

时间:2016-07-15 10:18:37

标签: python spyder reproducible-research

来自R,使用setwd来更改目录对于可重复性是一个很大的禁忌,因为其他目录结构与我的目录结构不同。因此,建议使用脚本位置的相对路径。

IDE稍微复杂一点,因为它们设置了自己的工作目录。在Rstudio中,我可以轻松解决Rstudio项目中的这个问题,将项目目录设置为我的脚本文件夹。

使用Python和Spyder,似乎没有任何解决方案。 Spyder没有像Rstudio这样的功能。进行交互式分析时Setting the directory to the script's location不起作用(因为__file__不可用)。

如何处理Python / Spyder中的工作目录是否可重现?

6 个答案:

答案 0 :(得分:7)

要自动执行此操作,请将其放在脚本的开头:

from os import chdir, getcwd
wd=getcwd()
chdir(wd)

答案 1 :(得分:4)

在此期间,您可以使用os.chdir

import os
os.chdir('C:\Users\me\Documents')

答案 2 :(得分:2)

看来他们确实认为这是Spyder基于此GitHub票证的一项功能,但截至5月中旬仍在等待实施:

  

我们可以在“运行”对话框中添加一个选项来自动设置   正在运行脚本的工作目录。

     

但是,其他人必须实施它。我们很忙   与其他事情在一起,抱歉。

https://github.com/spyder-ide/spyder/issues/3154

  

@ ccordoba12 ccordoba12将此添加到5月14日的愿望清单里程碑

答案 3 :(得分:1)

我尝试过了,而且可行。

import os
abspath = os.path.abspath('') ## String which contains absolute path to the script file
os.chdir(abspath) ## Setting up working directory

答案 4 :(得分:1)

当我写 here 时,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())

答案 5 :(得分:0)

嗯,你可以尝试很多东西! 1.将目录更改为工具栏中的当前目录。 2.将全局目录更改为首选项>全局工作目录中的当前目录。点击“当前文件目录”'单选按钮。

希望它有所帮助!