關(guān)于python處理大型json文件的方法
如圖所示,要處理的數(shù)據(jù)是一個(gè)json數(shù)組,而且非常大

下圖為電腦配置,使用 json.load() 方法加載上述json文件電腦直接卡死

解決思路:
先用python進(jìn)行預(yù)處理,即一整個(gè)json數(shù)據(jù)加載慢,那就分開加載,每次加載一個(gè)json對(duì)象,然后使用 json.dumps()方法 存儲(chǔ)到txt中,方便讀取。當(dāng)然也可以存儲(chǔ)到內(nèi)存中,根據(jù)情況而定。
算法思想:因?yàn)?json 是一種結(jié)構(gòu)化的數(shù)據(jù),所以 {} 是成對(duì)存在的。因?yàn)槭褂弥鹦凶x取的方法讀入json文件,所以根據(jù) {} 的數(shù)量來判斷是否讀取了一個(gè)完整的json對(duì)象,如果是完整的,則使用 json.dumps()方法 存儲(chǔ)到txt中。
getUsefullData(temp + line,id)這個(gè)方法是提取自己需要的數(shù)據(jù)
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)到此這篇關(guān)于python處理大型json文件的方法的文章就介紹到這了,更多相關(guān)python處理大型json文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中用表格格式打印列表的兩種實(shí)現(xiàn)
本文將詳細(xì)介紹如何在 Python 中以表格格式打印列表,以便更好地展示和呈現(xiàn)數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
Pygame游戲開發(fā)之太空射擊實(shí)戰(zhàn)碰撞改進(jìn)篇
相信大多數(shù)8090后都玩過太空射擊游戲,在過去游戲不多的年代太空射擊自然屬于經(jīng)典好玩的一款了,今天我們來自己動(dòng)手實(shí)現(xiàn)它,在編寫學(xué)習(xí)中回顧過往展望未來,在本課中,我們將討論如何更改?Pygame?處理精靈之間沖突的方式2022-08-08
Python多進(jìn)程與服務(wù)器并發(fā)原理及用法實(shí)例分析
這篇文章主要介紹了Python多進(jìn)程與服務(wù)器并發(fā)原理及用法,深入淺出的介紹了進(jìn)程、并行、并發(fā)、同步、異步等相關(guān)概念與原理,并結(jié)合實(shí)例形式給出了Python多進(jìn)程編程相關(guān)操作技巧,需要的朋友可以參考下2018-08-08
Python Flask上下文管理機(jī)制實(shí)例解析
這篇文章主要介紹了Python Flask上下文管理機(jī)制實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
詳解Django的CSRF認(rèn)證實(shí)現(xiàn)
這篇文章主要介紹了詳解Django的CSRF認(rèn)證實(shí)現(xiàn),詳細(xì)的介紹了csrf原理和實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10
安裝ElasticSearch搜索工具并配置Python驅(qū)動(dòng)的方法
這篇文章主要介紹了安裝ElasticSearch搜索工具并配置Python驅(qū)動(dòng)的方法,文中還介紹了其與Kibana數(shù)據(jù)顯示客戶端的配合使用,需要的朋友可以參考下2015-12-12
Python使用函數(shù)輔助工具簡化開發(fā)提高效率
這篇文章主要為大家介紹了Python使用函數(shù)輔助工具簡化開發(fā)提高效率,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
詳解python環(huán)境安裝selenium和手動(dòng)下載安裝selenium的方法
這篇文章主要介紹了詳解python環(huán)境安裝selenium和手動(dòng)下載安裝selenium的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
python?pycharm安裝第三方包失敗(使用pip安裝失敗)的解決方案
這篇文章主要給大家介紹了關(guān)于python?pycharm安裝第三方包失敗(使用pip安裝失敗)的解決方案,文中將可能遇到的幾種情況都進(jìn)行了分析并給出了詳細(xì)的解決方案,需要的朋友可以參考下2023-11-11

