python读取一个json文件某个数据_一个文件中的多个Json对象由python提取

因此,正如在一些注释中提到的那样,包含数组中的数据更简单,但随着数据集大小的增加,解决方案在效率方面不能很好地扩展。当你想要访问数组中的随机对象时,你真的应该只使用迭代器,否则,生成器是可行的方法。下面我有一个读取器函数的原型,它单独读取每个json对象并返回一个生成器。

基本思想是通知读者分割托架字符“\ n”(或Windows的“\ r \ n”)。Python可以用做这个文件 .readline()函数。

import json

def json_readr(file):

for line in open(file, mode="r"):

yield json.loads(line)

但是,此方法仅在您按原样编写文件时才能正常工作 - 每个对象用新行字符分隔。下面我写了一个编写器的例子,它分隔了一个json对象数组并将每个对象保存在一个新行上。

def json_writr(file, json_objects):

f = open(file, mode="w")

for jsonobj in json_objects:

jsonstr = json.dumps(jsonobj)

f.write(jsonstr+"\n")

f.flush()

f.close()

你也可以做同样的操作文件 .writelines()和列表理解

...

jsobjs = [json.dumps(j)+"\n" for j in json_objects]

f.writelines(jsobjs)

...

如果你想附加数据而不是写一个新文件,只需将'mode =“w”'改为'mode =“a”'。

最后,我发现当我尝试在文本编辑器中打开json文件时,这不仅有助于提高可读性,而且还有助于更有效地使用内存。

在那个注意事项中,如果你在某些时候改变主意并想从阅读器中找到一个列表,那么Python允许你将一个生成器函数放在一个列表中并自动填充列表。换句话说,就是写

lst = list(json_readr(file))

希望这可以帮助。对不起,如果它有点冗长。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值