请考虑以下事项:
$ cd /home/mydir
$ jupyter notebook --port=8888
简单来说,我正在/home/mydir
目录中运行jupyter服务器。
是否有一种简单的方法可以从笔记本中获取此目录,无论它是R笔记本还是Python笔记本或其他什么?也许有一些神奇的命令或变量?
注意:getwd()不是答案,因为它返回当前笔记本的目录,但不返回jupyter服务器根目录。
答案 0 :(得分:2)
我也遇到类似的问题,并且找到了您的帖子,尽管我没有找到可行的解决方案。最终,我确实找到了一个解决方案,尽管它仅适用于我只关心Linux和Python的问题。解决的办法是这条魔术线:
J_ROOT = os.readlink('/proc/%s/cwd' % os.environ['JPY_PARENT_PID'])
(我将其放在PYTHONPATH中的模块中,以便可以在任何Python笔记本中轻松使用它。)看看它是否对您有好处。
答案 1 :(得分:0)
请记住,您的iPtyhon只是一个Python模块,因此您可以在单元格中执行任何有效的Python代码。因此,如果您启动笔记本并且未能在代码中执行任何目录更改,则应该能够在单元格中检索cwd
以下内容:
import os
os.getcwd()
此外,您可以在单元格中执行shell命令,以便您可以检索单元格中的其他信息。例如:
!which jupyter
应该为您提供jupyter可执行文件的路径。
然后引导您运行类似:
!jupyter --paths
应该给你类似的东西:
config:
/Users/yourdir/.jupyter
/usr/local/etc/jupyter
/etc/jupyter
data:
/Users/yourdir/Library/Jupyter
/usr/local/share/jupyter
/usr/share/jupyter
runtime:
/Users/yourdir/Library/Jupyter/runtime
答案 2 :(得分:0)
坦率地说,令我惊讶的是,在这段时间之后,仍然没有内置的方法来执行此操作。我在Linux上使用过Isaac To's solution,但最近也不得不将jupyter笔记本也移植到Windows。简单地使用os.getcwd()很脆弱,因为在更改工作目录后,可能会再次调用使用它来设置JUPYTER_ROOT_DIRECTORY的单元格。
这是我想出的:
try:
JUPYTER_ROOT_DIRECTORY
except NameError:
JUPYTER_ROOT_DIRECTORY = os.getcwd()
我将其放在带有初始import
语句的前几个单元格之一中。如果再次调用该单元格,则不会重新设置变量值,因为该变量存在并且不会引发异常。
应注意,与Isaac To's solution不同的是,它将值设置为运行当前.ipynb的目录,该目录不必与用户可以在左侧访问的顶级目录相同。文件窗格。