2017-07-07 10 views
2

Ich möchte ein Notebook (wie das Klicken auf das "Datenträger" -Symbol in der Symbolleiste) über einen Codeblock speichern. Grund: Ich möchte nbconvert über eine %%bash Magie verwenden, um HTML- und Slide-Versionen zu speichern, aber das konvertiert, was auf der Festplatte ist, nicht was läuft.Wie kann ich ein Jupyter Notebook (iPython Notebook) programmatisch speichern?

Ich bin nicht auf der Suche nach dies jedes Mal, wenn ich speichere (für die ich sehe, einige Konfigurationen, die eingerichtet werden können), aber nur selektiv für einige meiner Notebooks. Ich möchte in der Lage sein, "Run All" zu starten und die letzten paar Zellen erstellen die zusätzlichen Dateien, die die aktuellen Daten auf dem Bildschirm im Moment widerspiegeln.

Ich habe versucht, %save und %notebook magics, aber weder ganz nicht, was ich suche (das Beste, was ich sagen kann).

Gibt es eine Möglichkeit, dies zu tun?

Antwort

0

A hacky Weg, es wird mit der %%javascript Notebook Magie zu tun dem Befehl

require(["base/js/namespace"],function(Jupyter) { 
    Jupyter.notebook.save_checkpoint(); 
}); 

Diese greift auf die globale Notebook-Instanz laufen (wenn auf der Notebook-Seite dies die aktuelle Notebook) und löst manuell ein speichern und Checkpoint.

+0

Danke dafür ... es ist clever und macht den Job. – kpmartin

1

Hier ist eine wiederverwendbare Version von @ louise-davies Antwort in Form einer Python-Funktion;

from IPython.display import Javascript 

script = ''' 
require(["base/js/namespace"],function(Jupyter) { 
    Jupyter.notebook.save_checkpoint(); 
}); 
''' 

def notebook_save(): 
    Javascript(script) 
    print('This notebook has been saved') 
Verwandte Themen