私は、* .ipynbファイルを真実のソースとして使用し、予定されたジョブ/タスクのためにそれらをプログラムで「コンパイル」することを検討しています。IPythonノートブックをコマンドライン経由でPythonファイルに変換するにはどうすればよいですか?
これを行うために私が理解する唯一の方法は、GUI経由です。コマンドラインでそれを行う方法はありますか?
私は、* .ipynbファイルを真実のソースとして使用し、予定されたジョブ/タスクのためにそれらをプログラムで「コンパイル」することを検討しています。IPythonノートブックをコマンドライン経由でPythonファイルに変換するにはどうすればよいですか?
これを行うために私が理解する唯一の方法は、GUI経由です。コマンドラインでそれを行う方法はありますか?
--script
フラグを持つスタートノートは、.py
ファイルを保存するたびに.ipynb
と一緒に保存されます。 github/ipython/nbconvertを見てください。現在はIPython自体にマージされていますので、docが正確であるとは思わないでください。この記事の執筆時点では、中<形式>(<形式> <file.ipynb> ./nbconvert)[パイソン、ラテックス、値下げ、full_html、...])
あなたがすることもできます(などipynbはjsonです)、ロードしてループし、現在の名前空間のeval
コーデックをループします。ここにはインターネット上の例やgithubに関するIPythonのwikiがあります。
この回答は古すぎます。以下の@williampliの回答をご覧ください。
ありがとう、ありがとうございます。これは私が探していたものです:) –
これは受け入れられた答えですが、 '--script'は[よく評価されていません]です(https://github.com/ipython/ipython/issues/3295#issuecomment-17678062)。 Jupyterの(サポートされている)['nbconvert'](http://nbconvert.readthedocs.org/en/latest/)に基づく[williampliの答え](http://stackoverflow.com/a/19779226/134610) 。 – duozmo
リンクが壊れています – denfromufa
あなたはPythonスクリプトに出力しますが、保存するたびにしたくない、またはあなたはIPythonカーネルを再起動したくない場合は、次の
:コマンドライン上では、nbconvert
を使用することができますハックのビットとして
$ jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb
、あなたも(任意のコマンドライン引数に使用)事前保留!
ででIPythonノート上記のコマンドを呼び出すことができます。ノートブック内部:addedた
!jupyter nbconvert --to script config_template.ipynb
--to script
前に、オプションが--to python
または--to=python
だったが、それは、言語に依存しないノートブックシステムへの移行でrenamedました。
保存するたびに1つずつ保存したい場合は、jupyterで保存前または保存後のフックで 'nbconvert'を起動できます:' ContentsManager.pre_save_hook' abd 'FileContentsManager .post_save_hook'。あなたはポストセーブフック 'jupyter nbconvert --to script [notebook]'を追加します。 – jaimedash
逆を行う方法、つまり、Pythonスクリプトからノートブックに変換する方法はありますか? ex - セルに解析されるいくつかの特殊なドキュメントストリングを持っていますか? –
フォルダ 'jupyter nbconvert --to script/path/to/notebooks/*。ipynb'にあるすべてのノートブックを変換する – openwonk
これはIPython APIから実行できます。ここで
from IPython.nbformat import current as nbformat
from IPython.nbconvert import PythonExporter
filepath = 'path/to/my_notebook.ipynb'
export_path = 'path/to/my_notebook.py'
with open(filepath) as fh:
nb = nbformat.reads_json(fh.read())
exporter = PythonExporter()
# source is a tuple of python source code
# meta contains metadata
source, meta = exporter.from_notebook_node(nb)
with open(export_path, 'w+') as fh:
fh.writelines(source)
は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()
Jupyterツールをインストールしたくない場合には、最高の答えです。 – dacracot
前の例に従うが新しいnbformat libのバージョンと:コードのSpawnriderの最後の行@
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'))
、
fh.writelines(source.encode('utf-8'))
は「TypeError例外を与える:書き込み()の引数intでなくstrでなければなりません '
しかし、が動作します。再帰的にPythonスクリプトに現在のディレクトリ内のすべての* .ipynb形式のファイルを変換するための
:
for i in *.ipynb **/*.ipynb; do
echo "$i"
jupyter nbconvert "$i" "$i"
done
Jupiter 4.4.0でデフォルトのHTML出力を避けるには、 '--to script'引数を追加する必要がありました。 – trojjer
あなたが「真のソース」とはどういう意味ですか? IPythonノートブックはjsonファイルです。読み込んでPython辞書として操作することができます。ソースコードの場合、 'cell_type'が 'code'に等しいところで' input'キーを反復する必要があります。この[スキーム]を見てください(http://i.imgur.com/Z0jSc.png) – theta
まあ、.ipynbは.pyファイルではなくリポジトリに保存したいと思います。そこで、 'ビルドステップ'として.ipynbを.pyファイルに変換し、自動化されたシステムで実際に使用するようにします。 私はちょうどjsonをロードしてコードセルのみを出力することができましたが、すでにそこに何かがあるかどうか疑問に思っていました:) –