我正在使用jupiter notebooks和root with C ++ kernel来创建一些交互式文档。文档包括一些直方图和其他图形,所以我使用魔术%% jsroot以使图形交互。神奇的是推动javascript而不仅仅是图像,因此它们可以是互动的。
一切正常,直到我尝试使用nbconvert将笔记本变成pdf文件。由于javascript无法转换为pdf我使用脚本删除我调用%% jsroot的单元格并重新运行笔记本以创建图像。 %% jsroot命令在单独的单元格中调用。 这是我的剧本:
导入字符串 导入系统 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()
它给了我错误:
追踪(最近一次通话): 文件“removeJS.py”,第28行,in cell [“execution_count”] - = 1 KeyError:'execution_count'
任何想法可能是什么?
答案 0 :(得分:1)
我找到了这个(简单的逻辑错误)。 markdown单元格上不存在execution_count属性,因此找不到它。