网络编程
位置:首页>> 网络编程>> Python编程>> 关于python处理大型json文件的方法

关于python处理大型json文件的方法

作者:人生天天快乐  发布时间:2023-09-24 12:47:47 

标签:python,处理,json文件

如图所示,要处理的数据是一个json数组,而且非常大

关于python处理大型json文件的方法

下图为电脑配置,使用 json.load() 方法加载上述json文件电脑直接卡死

关于python处理大型json文件的方法

解决思路:

先用python进行预处理,即一整个json数据加载慢,那就分开加载,每次加载一个json对象,然后使用 json.dumps()方法 存储到txt中,方便读取。当然也可以存储到内存中,根据情况而定。

算法思想:因为 json 是一种结构化的数据,所以 {} 是成对存在的。因为使用逐行读取的方法读入json文件,所以根据 {} 的数量来判断是否读取了一个完整的json对象,如果是完整的,则使用 json.dumps()方法 存储到txt中。

getUsefullData(temp + line,id)这个方法是提取自己需要的数据

def jsonProcess(fileName,round):
   id = 1
   with open(fileName, 'r', encoding='utf-8') as f,open('../tempData/tempFile'+str(round)+'.txt','w') as tempFile:
       line = f.readline()
       line = f.readline()
       temp = ''
       khNum = 0
       id = 1
       while line:
           # print(line)
           if line.find('{') != -1:
               khNum += 1

if line.find('}') != -1:
               khNum -= 1

if khNum == 0:
               line = line.replace(',','')
               data = getUsefullData(temp + line,id)
               id += 1
               if len(data) > 1:
                   # print(data)
                   try:
                       tempFile.write(json.dumps(data)+'\n')
                   except 'json.decoder.JSONDecodeError':
                       break
               temp = ''
               line = f.readline()
               continue
           temp += line
           line = f.readline()

读取方法:

with open('../tempData/tempFile'+str(round)+'.txt') as f:
       dataList = f.readlines()
       # 解析保存好的list
       for data in dataList:
           data = json.loads(data)

来源:https://www.cnblogs.com/sk-lqbzblogs/p/15979192.html

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com