【问题标题】:How to obtain Jupyter Notebook's path?如何获取 Jupyter Notebook 的路径?
【发布时间】:2018-08-31 16:24:03
【问题描述】:

有没有获取Notebook路径的功能?

我已经在 Google 上搜索了一些关于该主题的信息,但没有找到简单的方法...我想获取笔记本的路径,以便可以在其他地方使用它。这样我就可以在与笔记本相同的路径中保存/使用文件,而不必担心它的保存位置。

现在我的解决方案是将以下代码放在顶部,但显然这至少会带来手动执行单元格的问题,而且如果工作目录发生更改,这将停止工作。

import os
current_path = os.getcwd()

【问题讨论】:

  • 你说的是哪个路径,网络上笔记本的URI还是磁盘上的路径?看起来你想要在磁盘上,但这是不可能的。

标签: python jupyter-notebook jupyter


【解决方案1】:

TLDR:你不能

不可能始终如一地获取 Jupyter 笔记本的路径。请参阅ipython issue #10123 了解更多信息。我会引用Carreau:

以下是内核(在本例中为 IPython)的一些原因:

  • 可能不是从单个文件运行
  • 即使一个文件,该文件也可能不是笔记本。
  • 即使是笔记本,笔记本也可能不在文件系统上。
  • 即使在文件系统上,也可能不在同一台机器上。
  • 即使在同一台计算机上,文件的路径在 IPython 上下文中也可能没有意义。
  • 即使它有意义,但 Jupyter 协议并未被设计为这样做。而且我们没有短期或长期改变这种抽象的计划。

您的 hack 在大多数情况下都有效,根据具体情况并不算太糟糕。

【讨论】:

  • 我觉得在 99.9999% 的情况下,只需提供一种方法来返回 .ipynb 的位置就足够了。这感觉就像是与现实世界使用的惊人脱节,并且是非 Python 思维。
  • 我认为你大大低估了这种情况发生的频率。 Google Colab 使用非常广泛,无法提供 ipynb 的位置。
【解决方案2】:

结合用户@peng 在stackoverflow 问题中的回答:

path problem : NameError: name '__file__' is not defined

和用户@russel-dias 在:

Find current directory and file's directory

您可以通过以下方式获取笔记本所在的路径:

os.path.dirname(os.path.realpath("__file__"))

这样ipynb_path = os.path.dirname(os.path.realpath("__file__"))

【讨论】:

  • 此答案适用于常规 python 和笔记本!
  • @pristakos 谢谢你,这正是我想要的
【解决方案3】:

如果你能打开它 你可以使用这个功能

1-打开你的 Jupyter 笔记本 2-写这个函数 3-它会打印出路径

pwd

如果没有 导航到您的 python 安装文件夹 打开文件夹scripts,你会在那里找到它。

希望这可以帮助其他人

【讨论】:

  • :( 这会导致 jupyter notebook 启动的根目录,它可能但不总是 .ipynb 所在的目录......
【解决方案4】:

在单元格中使用它

%%javascript
IPython.notebook.kernel.execute('nb_name = "' + IPython.notebook.notebook_name + '"')
print(nb_name)

【讨论】:

  • 这行得通(至少在本地笔记本中),但必须将 print() 放在单独的 (Python) 单元格中。
【解决方案5】:

您可以右键单击 Jupyter 笔记本快捷方式图标(在我的情况下位于 Anaconda3 文件夹下)并转到属性。 在那里你会找到 Jupyter 的完整路径: D:\anaconda3\python.exe d:\anaconda3\cwp.py d:\anaconda3 d:\anaconda3\python.exe d:\anaconda3\Scripts\jupyter-notebook-script .py "%USERPROFILE%/"

Jupyter 快捷方式的属性:

【讨论】:

    【解决方案6】:

    您可以只使用代表打印工作目录的“pwd”。 enter image description here

    【讨论】:

      猜你喜欢
      • 2022-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-13
      相关资源
      最近更新 更多