将工作目录设置为笔记本目录

Set Working Directory to Notebook Directory

在 IPython nb 中,是否可以通过编程方式将工作目录设置为笔记本的目录?

例如,以下代码将在常规 .py 文件中运行。

import os
# show working dir
os.chdir(os.path.abspath('/'))
print "initial working directory:\t", os.getcwd()

# get path of script file
scriptPath = os.path.abspath(os.path.dirname(__file__))

# change working dir to dir with script file
os.chdir(scriptPath)

# show working directory
print "final working directory:\t", os.getcwd()

但是,我找不到

的等效项
__file__ 

ipython nb 文件的变量。 ipynb 文件是否有一些等效的方法?

iPython 笔记本似乎自动将目录切换到与 .ipynb 文件相同的目录。您要更改出该目录然后再​​更改回来吗?如果是这样,只需将原始目录存储在程序的开头,并随时使用它。

import os
orig_dir = os.getcwd()
os.chdir('/some/other/directory')
#do stuff
os.chdir(orig_dir)

编辑: 似乎有一个特殊变量 _dh,它是一个列表,其中 _dh[0] 包含目录的名称iPython 内核已启动。我只是刚刚发现这一点,所以我不确定这对 SaveAs 是否有效(我在我的 iPython 版本中找不到执行此操作的方法)。但是,当我执行 os.chdir() 时它并没有改变,所以我怀疑至少列表的第一个元素总是包含笔记本的目录。