听起来很简单,如何将保存路径(.ipynb文件的位置)形成一个带有笔记本的单元格。
答案 0 :(得分:2)
使用Jupyter,您可以在URL中获取笔记本的相对路径:
%%javascript
var kernel = Jupyter.notebook.kernel;
var command = ["notebookPath = ",
"'", window.document.body.dataset.notebookPath, "'" ].join('')
//alert(command)
kernel.execute(command)
var command = ["notebookName = ",
"'", window.document.body.dataset.notebookName, "'" ].join('')
//alert(command)
kernel.execute(command)
然后你可以检查python变量notebookName和notebookPath
我不确定url前缀的结果,以及当你已经更改笔记本中的当前目录时如何处理这种情况
答案 1 :(得分:1)
结果可以使用一些javascript魔法从笔记本页面的HTML正文中的某些属性获取笔记本路径:
%%javascript
var kernel = IPython.notebook.kernel;
var proj = window.document.body.getAttribute('data-project');
var path = window.document.body.getAttribute('data-notebook-path');
var command = "proj = " + "'"+proj+"'";
kernel.execute(command);
var command = "path = " + "'"+path+"'" kernel.execute(command)
在单元格中执行上述操作后,可以通过执行
来获取路径import os
os.path.join( proj, path)
答案 2 :(得分:0)
其他答案未获得正确的完整路径。他们可以相对于内核的笔记本工作目录或Jupyter主目录获取它。
以下是获取完整笔记本路径的方法:
首先,使用JavaScript单元格获取笔记本的文件名,通过URL对其进行解码,并将其放入Python变量中:
%%javascript
// Fetch and decode the notebook filename
var notebookFilename = decodeURIComponent(
window.document.body.dataset.notebookName
);
// Drop the filename into a Python variable
Jupyter.notebook.kernel.execute(
`notebook_filename = "${notebookFilename}"`
);
然后在第二个单元格中,将该文件名转换为绝对路径:
import os
notebook_path = os.path.abspath(notebook_filename)
notebook_path
notebook_path
现在将成为笔记本的完整绝对路径。
在Ubuntu 77上使用jupyter-notebook 5.7.8测试了