python解析大json文件

当json文件过大时,使用内置的json模块解析会报错,后发现ijson模块可以很好的解决这个问题:

参考:Python解析超大的json数据(GB级别)

使用过程中,还发现使用ijson,能较好的发现json文件是否有问题。例如,使用ijson读取一个json文件后,如果该json文件本身有问题,它会显示的报错错误:

Traceback (most recent call last):
  File "E:/test/work/myspider/test/read_json.py", line 28, in <module>
    main()
  File "E:/test/work/myspider/test/read_json.py", line 21, in main
    print(objects.__next__())
ijson.common.IncompleteJSONError: parse error: trailing garbage
          1424310102120440291B120788"}}{"status_code":0,"min_cursor":1
                     (right here) ------^

通过报错可知,实际上是json文件本身有错误,该json文件本身包含多个字典对象,但是彼此之间未正确分隔,所以在读取时候会出错。如果只是用json或者ujson模块解析,则不会显示的报错。代码:

# -*- coding: utf-8 -*-

"""
@author: 
@time:
@description: 
"""

import ijson


def main():
    path = r'C:\Users\admin\Desktop\dou.json'
    with open(path, 'rt', encoding='utf8') as f:
        objects = ijson.items(f, 'a')
        while True:
            try:
                print(objects.__next__())
            except StopIteration as e:
                print("数据读取完成")
                break


if __name__ == "__main__":
    main()

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值