如何在不出现json错误的情况下正确合并两个ipython笔记本?
我试过:如何在不出现json错误的情况下正确合并两个ipython笔记本?,json,ipython-notebook,Json,Ipython Notebook,我试过: cat file1.ipynb file2.ipynb > filecomplete.ipynb 因为笔记本只是json文件,但这给了我一个错误 Unreadable Notebook: Notebook does not appear to be JSON: '{\n "metadata": {' 我认为这些必须是有效的json文件,因为file1和file2分别加载到nbviewer中,所以我不能完全确定我做错了什么 将2个对象与某些属性连接起来并不总是产生具有相同属性
cat file1.ipynb file2.ipynb > filecomplete.ipynb
因为笔记本只是json文件,但这给了我一个错误
Unreadable Notebook: Notebook does not appear to be JSON: '{\n "metadata": {'
我认为这些必须是有效的json文件,因为file1和file2分别加载到nbviewer中,所以我不能完全确定我做错了什么 将2个对象与某些属性连接起来并不总是产生具有相同属性的对象。这是一个不断增加的数字序列:
4815162342
,这是另一个1234567
。这两者的结合并没有严格地增加:4 8 15 16 23 42 1 2 3 4 5 6 7
。Json也是如此
您需要使用json库加载json文件,并自己进行合并。我想您“只是”想要连接单元格,但可能您想要连接工作表;可能您想合并元数据。此Python脚本将所有以给定
前缀命名的笔记本连接起来,并显示在给定文件夹的第一级。生成的笔记本保存在同一文件夹中,名称为“”compile_“+prefix+”.ipynb”
警告:元数据是第一个笔记本的元数据,单元格仅是第一个工作表的元数据(它似乎包含所有单元格,至少在我的笔记本中)
import json
import os
folder = "slides"
prefix = "quiz"
paths = [os.path.join(folder, name) for name in os.listdir(folder) if name.startswith(prefix) and name.endswith(".ipynb")]
result = json.loads(open(paths.pop(0), "r").read())
for path in paths:
result["worksheets"][0]["cells"].extend(json.loads(open(path, "r").read())["worksheets"][0]["cells"])
open(os.path.join(folder, "compil_%s.ipynb" % prefix), "w").write(json.dumps(result, indent = 1))