在不知道架构的情况下加载非常大的JSON文件?

时间:2017-02-19 13:25:09

标签: python json postgresql memory large-files

我正在尝试在Python中加载一个非常大的JSON文件。我试过了:

import json
data = open('file.json').read()
loaded = json.loads(data)

但是这给了我一个SIGKILL错误。

我试过了:

import pandas as pd
df = pd.read_json('file.json')

我得到了一个内存不足的错误。

我想尝试使用ijson来传输我的数据,并且一次只将一个子集拉入其中。但是,您需要知道JSON文件的架构是什么,以便您知道要查找的事件。我实际上并不知道我的JSON文件的架构是什么。所以,我有两个问题:

  1. 有没有办法在不知道架构的情况下在Python中加载或流式传输大型json文件?或者将JSON文件转换为另一种格式(或者转换为postgresql服务器)的方法?

  2. 是否有用于吐出我的JSON文件架构的工具?

  3. 更新:

    使用head file.json来了解我的JSON文件的外观。从那里开始有点容易。

2 个答案:

答案 0 :(得分:0)

我会处理文件的较小部分。看看Lazy Method for Reading Big File in Python?。您可以调整建议的答案来按对象解析JSON对象。

答案 1 :(得分:-1)

你可以读一下这样的东西

f=open("file.json")
while True:
    data = f.read(1024)
    if not data:
        break
    yield data

逐行选项     data = []     打开('文件')作为f:         对于f中的行:             data.append(json.loads(线))

另外看看 https://www.dataquest.io/blog/python-json-tutorial/

使用jsonline

寻找更多答案