nbconvert 6.0 devrait corriger --clear-output
L'option était cassée depuis longtemps, rapport de bogue avec patch fusionné :https://github.com/jupyter/nbconvert/issues/822
L'utilisation doit être pour un fonctionnement sur place :
jupyter nbconvert --clear-output --inplace my_notebook.ipynb
Ou pour enregistrer dans un autre fichier appelé my_notebook_no_out.ipynb
:
jupyter nbconvert --clear-output \
--to notebook --output=my_notebook_no_out my_notebook.ipynb
Cela a été porté à mon attention par Harold dans les commentaires.
Avant nbconvert 6.0 :--ClearOutputPreprocessor.enabled=True
Même usage que --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
Testé dans Jupyter 4.4.0, notebook==5.7.6.
Si vous créez un .gitattributes
fichier, vous pouvez exécuter un filtre sur certains fichiers avant qu'ils ne soient ajoutés à git. Cela laissera le fichier d'origine sur le disque tel quel, mais validera la version "nettoyée".
Pour que cela fonctionne, ajoutez ceci à votre .git/config
local ou global ~/.gitconfig
:
[filter "strip-notebook-output"]
clean = "jupyter nbconvert --ClearOutputPreprocessor.enabled=True --to=notebook --stdin --stdout --log-level=ERROR"
Créez ensuite un .gitattributes
fichier dans votre répertoire avec des cahiers, avec ce contenu :
*.ipynb filter=strip-notebook-output
Comment cela fonctionne :
- L'attribut indique à git d'exécuter le
clean
du filtre action sur chaque fichier notebook avant de l'ajouter à l'index (staging). - Le filtre est notre ami
nbconvert
, configuré pour lire depuis stdin, écrire sur stdout, supprimer la sortie et ne parler que lorsqu'il a quelque chose d'important à dire. - Lorsqu'un fichier est extrait de l'index, le filtre
smudge
l'action est exécutée, mais il s'agit d'un no-op car nous ne l'avons pas spécifié. Vous pouvez exécuter votre bloc-notes ici pour recréer la sortie (nbconvert --execute
). - Notez que si le filtre échoue d'une manière ou d'une autre, le fichier sera transféré non converti.
Mon seul petit reproche avec ce processus est que je peux commettre .gitattributes
mais je dois dire à mes collègues de mettre à jour leur .git/config
.
Si vous voulez une version plus hackeuse mais beaucoup plus rapide, essayez JQ :
clean = "jq '.cells[].outputs = [] | .cells[].execution_count = null | .'"
Utilisez --ClearOutputPreprocessor.enabled=True et --clear-output
Suite à cette commande :
jupyter nbconvert --ClearOutputPreprocessor.enabled=True --clear-output *.ipynb