Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不出现json错误的情况下正确合并两个ipython笔记本?_Json_Ipython Notebook - Fatal编程技术网

如何在不出现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))