jupyter notebook からソースコードだけを抽出する方法です
2行でまとめると
- nbconvertを使う方法が定番.でも動作が遅い
- 20倍以上高速な jq を使う方法がおすすめ
となります.以下,詳細です.
nbconvert を使う方法
input.ipynb からpythonコードを取り出して test.py に保存する場合は以下のコマンドを実行します.
$ jupyter nbconvert --to script input.ipynb --output test
jq を使う方法
上述の nbconvert は高機能ですが,動作が遅いです.nbconvertはpythonで記述されているためです.
別解として jq を使う方法があります.
$ jq -j '.cells | map( select(.cell_type == "code") | .source + ["\n\n"] ) | .[][]' < input.ipynb > test.py
こんなコード,毎回入力できませんね.シェルスクリプトにします
ipynb2py.sh
#!/bin/sh if [ -z "$1" ]; then echo "usage:" echo " $0 input.ipynb" exit 1 fi cat $1 | jq -j '.cells | map( select(.cell_type == "code") | .source + ["\n\n"] ) | .[][]'
この内容を ipynb2py.sh という名前で保存します. ipynb2py.sh はPATHが通ってるディレクトリに配置しましょう.これで簡単にjq が利用できます.