私は、いくつかのインタラクティブなドキュメントを作成するために、jupiterノートブックとrootをC++カーネルで使用しています。ドキュメントにはいくつかのヒストグラムやその他のグラフが含まれているので、グラフをインタラクティブにするためにマジック%% jsrootを使用しています。魔法はイメージだけでなく、javascriptをプロデュースするので、インタラクティブにすることができます。Pythonスクリプトのあいまいなエラーメッセージ
すべては、nbconvertを使用してノートブックをpdfファイルに変換しようとするまで機能します。 JavaScriptはpdfに転送できないので、スクリプトを使用して%% jsrootという名前のセルを削除し、画像を作成するためにノートブックを再実行しています。 %% jsrootコマンドは別のセルで呼び出されます。 これは私のスクリプトです:それは私にエラーを与える
輸入列 インポートSYS inFileNameは= sys.argvの[1] outFileNameは= sys.argvの[2]
f = open(infilename)
lines = f.readlines()
f.close()
text = "".join(lines)
true=True
false=False
nbj = eval(text)
cells = nbj["cells"]
newcells=[]
jscount = 0
mustdecrement = False
for cell in cells:
if cell["source"][0] == "%%jsroot on":
mustdecrement = True
jscount = 1
continue
else:
if mustdecrement:
cell["execution_count"] -= 1
newcells.append(cell)
nbj["cells"] = newcells
if jscount == 1:
newnb = open(outfilename,"w")
newnb.write(str(nbj))
newnb.close()
:
Traceback (most recent call last): File "removeJS.py", line 28, in cell["execution_count"] -= 1 KeyError: 'execution_count'
これはどんな考えですか?
サイドノート: 'eval(text)'を実行することは、JSONをロードする良い方法ではありません。私たちは[nbformatパッケージ](http://nbformat.readthedocs.org/en/latest/api.html)を提供して、ノートブックファイルを読み書きします。 –
こんにちはトーマス、ありがとう、それは役立つ多くの答えです。私は新しいipynbファイルにノートブックを読み込んで、それをうまく書くためにnbformatを使いました。私の次の問題は、ファイルに書き込む前に辞書を編集する方法を本当に理解していないということです。どのようにアクセスして、セルを編集する方法についてのいくつかのドキュメントですか? –
良いドキュメントはないと思いますが、nbformatから取得したノートブックオブジェクトはノートブックのJSON構造に従っているので、 'nb.cells'はセルのリストになります。 –