Durch die Modifizierung der Methode von @jfb erhalten Sie die folgende Funktion, die gut auf ipykernel-5.3.4 funktioniert hat.
def getNotebookName():
display(Javascript('IPython.notebook.kernel.execute("NotebookName = " + "\'"+window.document.getElementById("notebook_name").innerHTML+"\'");'))
try:
_ = type(NotebookName)
return NotebookName
except:
return None
Beachten Sie, dass das Anzeigen von JavaScript einige Zeit benötigt, um den Browser zu erreichen, und es einige Zeit dauert, um das JS auszuführen und zum Kernel zurückzukehren. Es mag dumm klingen, aber es ist besser, die Funktion in zwei Zellen auszuführen, wie hier:
nb_name = getNotebookName()
und in der nächsten Zelle:
for i in range(10):
nb_name = getNotebookName()
if nb_name is not None:
break
Wenn Sie jedoch keine Funktion definieren müssen, ist es ratsam, display(Javascript(..))
in einer Zelle auszuführen und den Notebook-Namen in einer anderen Zelle zu überprüfen. Auf diese Weise hat der Browser genügend Zeit, um den Code auszuführen und den Notebook-Namen zurückzugeben.
Wenn es Ihnen nichts ausmacht, eine Bibliothek zu verwenden, ist der zuverlässigste Weg:
import ipynbname
nb_name = ipynbname.name()
0 Stimmen
Was versuchst du damit zu tun? Designmäßig weiß der Kernel (der Teil, der Code ausführt) nichts über das Frontend (der Teil, der Notebooks öffnet).
7 Stimmen
Hallo, ich möchte es mit nbconvert verwenden, um den Prozess der automatischen Umwandlung des Notebooks in Latex/PDF zu automatisieren. Meine Notebooks werden remote ausgeführt. Nach einer Klasse können die Schüler eine PDF-Version ihrer Ergebnisse herunterladen.
1 Stimmen
P.Toccaceli's Antwort funktioniert gut mit den neuesten Versionen von JupyterLab (1.1.4) (Notebook 5.6.0) und erfordert kein Javascript.
2 Stimmen
Verwandt: github.com/jupyter/notebook/issues/1000#issuecomment-359875246
7 Stimmen
Einige haben die Arbeit gemacht und ein Pip-Paket erstellt: pypi.org/project/ipynbname installieren mit
pip install ipynbname
2 Stimmen
Ja,
ipynbname
funktioniert jetzt mit jupyter 3 (weitere Details hier)0 Stimmen
ipynbname
hat nicht auf Jupyter 4 funktioniert.