首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用python从列表中加载来自多个JSON文件的数据?

如何使用python从列表中加载来自多个JSON文件的数据?
EN

Stack Overflow用户
提问于 2020-02-22 20:49:28
回答 1查看 490关注 0票数 0

本质上,我有一个JSON文件列表,我需要从这些文件中提取信息,这些信息保存在一个名为json_files的变量中。

然后,需要将这些文件中的信息聚合到一个名为summary.json的新文件中。

目前,通过指定索引,我可以使用以下代码行,但一次只能对一个文件执行此操作:

代码语言:javascript
复制
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。

代码语言:javascript
复制
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文件的最佳方法是什么?

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-22 20:54:07

代码语言:javascript
复制
for i in json_files:
    with open(json_files[i]) as f:
        data = json.load(f)

应该是

代码语言:javascript
复制
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变量在循环的每一次迭代中都会被覆盖!您可能需要这样做才能修复它:

代码语言:javascript
复制
combined = []
    for i in json_files:
        with open(i) as f:
            combined.append(json.load(f))

然后使用dump函数将此列表写入另一个文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60356679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档