nbconvert 6.0 dovrebbe correggere --clear-output
L'opzione era stata interrotta per molto tempo in precedenza, segnalazione di bug con patch unita:https://github.com/jupyter/nbconvert/issues/822
L'utilizzo dovrebbe essere per operazioni sul posto:
jupyter nbconvert --clear-output --inplace my_notebook.ipynb
O per salvare in un altro file chiamato my_notebook_no_out.ipynb
:
jupyter nbconvert --clear-output \
--to notebook --output=my_notebook_no_out my_notebook.ipynb
Questo è stato portato alla mia attenzione da Harold nei commenti.
Prima di nbconvert 6.0:--ClearOutputPreprocessor.enabled=True
Stesso utilizzo di --clear-output
:
jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace my_notebook.ipynb
jupyter nbconvert --ClearOutputPreprocessor.enabled=True \
--to notebook --output=my_notebook_no_out my_notebook.ipynb
Testato in Jupyter 4.4.0, notebook==5.7.6.
Se crei un .gitattributes
file, puoi eseguire un filtro su determinati file prima che vengano aggiunti a git. Ciò lascerà il file originale sul disco così com'è, ma eseguirà il commit della versione "pulita".
Affinché funzioni, aggiungilo al tuo .git/config
locale o globale ~/.gitconfig
:
[filter "strip-notebook-output"]
clean = "jupyter nbconvert --ClearOutputPreprocessor.enabled=True --to=notebook --stdin --stdout --log-level=ERROR"
Quindi crea un .gitattributes
file nella tua directory con i taccuini, con questo contenuto:
*.ipynb filter=strip-notebook-output
Come funziona:
- L'attributo dice a git di eseguire l'
clean
del filtro azione su ogni file notebook prima di aggiungerlo all'indice (staging). - Il filtro è il nostro amico
nbconvert
, impostato per leggere da stdin, scrivere su stdout, rimuovere l'output e parlare solo quando ha qualcosa di importante da dire. - Quando un file viene estratto dall'indice, il filtro è
smudge
l'azione viene eseguita, ma si tratta di un no-op in quanto non l'abbiamo specificato. Puoi eseguire qui il tuo notebook per ricreare l'output (nbconvert --execute
). - Nota che se il filtro in qualche modo fallisce, il file verrà messo in scena senza essere convertito.
La mia unica piccola lamentela con questo processo è che posso eseguire il commit .gitattributes
ma devo dire ai miei colleghi di aggiornare il loro .git/config
.
Se vuoi una versione più hacker ma molto più veloce, prova JQ:
clean = "jq '.cells[].outputs = [] | .cells[].execution_count = null | .'"
Utilizza --ClearOutputPreprocessor.enabled=True e --clear-output
Dopo questo comando:
jupyter nbconvert --ClearOutputPreprocessor.enabled=True --clear-output *.ipynb