JupyterのノートブックをGitで管理する場合、出力をクリアしてコミットすることが多いと思います。もちろん、exampleファイルなどの場合は出力結果の図などが付いた状況で保存したいということもあるとは思いますが。
それ以外にも、notebookファイルの数が大量になってくるとグラフやワードクラウドなどの出力を含む一つ一つのファイルサイズの大きさがディスク容量を圧迫するということもあるでしょう。そういった場合、最初は出力結果も残しておきたいけど1~2年経ったら中身クリアしてディスク節約したいなってこともあります。
この様な場合に、一回一回notebookを起動して出力をクリアして保存し直すというのはかなり手間です。
そこで、コマンドラインで実行する方法を紹介します。
利用するのは jupyter nbconvert です。
以前、notebookをコマンドラインで実行する記事でも使いましたね。
参考: Jupyter notebookのファイルをコマンドラインで実行する
ドキュメントを見ても、該当の記述が見つからないのですが、jupyter nbvonvertには –clear-output というオプションがあり、これを使うと出力をクリアできます。
ヘルプを見るとその中には記載があります。
$ jupyter nbconvert --help
# 該当部分を抜粋
--clear-output
Clear output of current file and save in place,
overwriting the existing notebook.
Equivalent to: [--NbConvertApp.use_output_suffix=False --NbConvertApp.export_format=notebook --FilesWriter.build_directory= --ClearOutputPreprocessor.enabled=True]
使い方は簡単で、あとはnotebookファイル名を指定するだけです。
$ jupyter nbconvert --clear-output sample.ipynb
これで、notebookがクリアされ、未実行の状態になって上書き保存されます。
もし、ディスク容量の節約が目的であれば、この時点では思ったほど容量が節約できていないということもあるかもしれません。それは大抵、隠しディレクトリの .ipynb_checkpoints というのが生成されているせいなのでこれを丸ごと消しておきましょう。(実行時のバックアップなので、このディレクトリは消しても実害ありません。)