我想(预处理)大型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的内存)
我已经读过,可以使用块,但我无法通过“块逻辑”来实现有办法“分块化”吗?
很高兴为您提供帮助。
我很难想象多根元素的想法,但是您应该将file_data内容写入磁盘,然后尝试分别读取它。如果您打开了文件,除了file_data对象(甚至可能是修改后的对象)要消耗的RAM之外,它还会消耗RAM。尽管这是垃圾收集器的问题。我认为函数返回后才完成垃圾收集。)尝试使用f。显式关闭而不是with,然后从单独的函数返回。