*.ipynbファイルを信頼できる情報源として使用し、スケジュールされたジョブ/タスクの .py ファイルにプログラムで「コンパイル」することを検討しています。
これを行う唯一の方法は、GUI を使用することです。コマンドライン経由でそれを行う方法はありますか?
*.ipynbファイルを信頼できる情報源として使用し、スケジュールされたジョブ/タスクの .py ファイルにプログラムで「コンパイル」することを検討しています。
これを行う唯一の方法は、GUI を使用することです。コマンドライン経由でそれを行う方法はありますか?
保存するたびに Python スクリプトを出力したくない場合、または IPython カーネルを再起動したくない場合:
コマンド ラインでは、次を使用できますnbconvert
。
$ jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb
ちょっとしたハックとして、(任意のコマンド ライン引数に使用される)前に保留することにより、IPython ノートブックで上記のコマンドを呼び出すこともできます。!
ノートブックの内部:
!jupyter nbconvert --to script config_template.ipynb
--to script
が追加される前は、オプションは--to python
またはでしたが、言語に依存しないノートブック システムへの移行で名前--to=python
が変更されました。
これは、ipython を使用せずに V3 または V4 ipynb からコードを抽出するための、手早く汚い方法です。細胞の種類などはチェックしません。
import sys,json
f = open(sys.argv[1], 'r') #input.ipynb
j = json.load(f)
of = open(sys.argv[2], 'w') #output.py
if j["nbformat"] >=4:
for i,cell in enumerate(j["cells"]):
of.write("#cell "+str(i)+"\n")
for line in cell["source"]:
of.write(line)
of.write('\n\n')
else:
for i,cell in enumerate(j["worksheets"][0]["cells"]):
of.write("#cell "+str(i)+"\n")
for line in cell["input"]:
of.write(line)
of.write('\n\n')
of.close()
前の例に従いますが、新しい nbformat lib versionを使用します。
import nbformat
from nbconvert import PythonExporter
def convertNotebook(notebookPath, modulePath):
with open(notebookPath) as fh:
nb = nbformat.reads(fh.read(), nbformat.NO_CONVERT)
exporter = PythonExporter()
source, meta = exporter.from_notebook_node(nb)
with open(modulePath, 'w+') as fh:
fh.writelines(source.encode('utf-8'))
マジック コマンドは、現在の%notebook foo.ipynb
IPython を "foo.ipynb" にエクスポートします。
入力による詳細情報%notebook?