我试过了:
cat file1.ipynb file2.ipynb > filecomplete.ipynb
因为笔记本只是json文件,但这给了我错误
Unreadable Notebook: Notebook does not appear to be JSON: '{\n "metadata": {'
我认为这些必须是有效的json文件,因为file1和file2每个都单独加载到nbviewer中,所以我不完全确定我做错了什么。
答案 0 :(得分:0)
此Python脚本连接所有以给定prefix
命名的笔记本,并出现在给定folder
的第一级。生成的笔记本将保存在名为"compil_" + 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))
警告:元数据是第一个笔记本的元数据,只有第一个工作表的元数据(至少在我的笔记本中似乎包含所有单元格)。
答案 1 :(得分:-1)
将2个对象与某些属性连接并不总是会产生具有相同属性的对象。这是一个数字递增的序列:4 8 15 16 23 42
,这是另一个1 2 3 4 5 6 7
。两者的连接并没有严格增加:4 8 15 16 23 42 1 2 3 4 5 6 7
。 Json也是如此。
您需要使用json lib加载json文件并执行您想要自己进行的合并。我想你“只是”想要连接单元格,但也许你想要连接工作表;也许你想合并元数据。