当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()

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐