本质上,我有一个JSON文件列表,我需要从这些文件中提取信息,这些信息保存在一个名为json_files的变量中。
然后,需要将这些文件中的信息聚合到一个名为summary.json的新文件中。
目前,通过指定索引,我可以使用以下代码行,但一次只能对一个文件执行此操作:
with open(json_files[1]) as f:
data = json.load(f)
with open('summary.json', 'w') as f:
json.dump(data, f, indent=2)但是,如果我尝试像下面这样使用for循环,就会得到一个TypeError:列表索引必须是整数或切片,而不是str。
for i in json_files:
with open(json_files[i]) as f:
data = json.load(f)
with open('summary.json', 'w') as f:
json.dump(data, f, indent=2)因此,我想知道从多个json文件加载信息并将其合并成一个新的大型json文件的最佳方法是什么?
提前感谢
发布于 2020-02-22 20:54:07
for i in json_files:
with open(json_files[i]) as f:
data = json.load(f)应该是
for i in json_files:
with open(i) as f:
data = json.load(f)发生了什么:json_files是一个列表,上面有我想要的名字,所以类似于json_files = ['file1.json', 'file2.json']
因此,打开的方法是在for循环中获取像json_files['file1.json']这样的参数,这是没有意义的,因为json_files是一个列表,而不是一个字典。
for循环中的i保存列表中的实际值,而不是索引。
编辑:
上面代码中的data变量在循环的每一次迭代中都会被覆盖!您可能需要这样做才能修复它:
combined = []
for i in json_files:
with open(i) as f:
combined.append(json.load(f))然后使用dump函数将此列表写入另一个文件。
https://stackoverflow.com/questions/60356679
复制相似问题