Python 使用多个根元素处理大型JSON并读入数据帧

Python 使用多个根元素处理大型JSON并读入数据帧,python,json,Python,Json,我想(预)处理包含多个根元素的大型JSON文件(每个文件5-10GB)。这些根元素之间没有分隔符,如下所示:{}{} 因此,我首先编写了以下简单代码以获取有效的JSON文件: with open(file) as f: file_data = f.read() file_data = file_data.replace("}{", "},{") file_data = "[" + file_data + "]" df = pd.read_json(file_d

我想(预)处理包含多个根元素的大型JSON文件(每个文件5-10GB)。这些根元素之间没有分隔符,如下所示:{}{}

因此,我首先编写了以下简单代码以获取有效的JSON文件:

with open(file) as f: 
    file_data = f.read()
    file_data = file_data.replace("}{", "},{") 
    file_data = "[" + file_data + "]"
    df = pd.read_json(file_data)
显然,这不适用于大文件。即使是400MB的文件也无法工作。(我有16GB的内存)

我曾读到,可以使用块,但我无法在“块逻辑”中实现这一点 有没有一种方法可以“chunkenize”这个


我很高兴您的帮助。

我很难想象多个根元素的想法,但您应该将文件数据内容写入磁盘,然后尝试单独读取。如果打开文件,除了文件\数据对象(甚至可能是修改过的对象,尽管这是一个垃圾收集器问题。我认为垃圾收集在函数返回后完成)之外,还会消耗RAM尝试显式使用f.close而不是with,并从单独的函数返回它。

为什么首先有多个根元素?为什么不把JSON数组放到文件中呢?这是来自数据源的,我对此没有影响。你应该告诉他们这是不可处理的,没有一种可靠的方法来分隔数据。如果JSON数据中有任何字符串包含
}{
,则您的方法将无法工作。我应该如何将“with”替换为“f.close”?我找到了()。查看最后一个答案,这看起来非常有希望。但我无法将此应用于来自磁盘的文件。我收到一个错误:JSONDECODERROR:期望值:第1行第1列(字符0)…有什么建议吗?