Как найти путь к текущему ноутбуку Ipython?

Как просто, как это звучит, как мне получить путь сохранения (расположение файла .ipynb) в ячейке с ноутбуком.

Ответ 1

С 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 и как обрабатывать случай, когда вы уже изменили текущий каталог в ноутбуке

Ответ 2

Оказывается, можно использовать некоторую магию 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)