亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Python中讀取相當大的json文件

在Python中讀取相當大的json文件

HUWWW 2019-08-12 17:46:43
在Python中讀取相當大的json文件所以我有一些相當大的json編碼文件。最小的是300MB,但這是迄今為止最小的。其余的是多GB,大約2GB到10GB +。所以當我嘗試使用Python加載文件時,我似乎耗盡了內存。我目前正在進行一些測試,看看處理這些東西需要多長時間才能看到從這里開始。這是我用來測試的代碼:from datetime import datetimeimport jsonprint datetime.now()f = open('file.json', 'r')json.load(f)f.close()print datetime.now()毫不奇怪,Python給了我一個MemoryError。似乎json.load()調用json.loads(f.read()),它試圖首先將整個文件轉儲到內存中,這顯然不會起作用。我能干什么方式解決這個問題嗎?我知道這是舊的,但我不認為這是重復的。答案是一樣的,但問題是不同的。在“重復”中,問題是如何有效地讀取大文件,而這個問題處理甚至根本不適合內存的文件。效率不是必需的。
查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

這里的問題是作為一種格式的JSON通常被完整地解析然后在內存中處理,這對于如此大量的數據顯然是有問題的。

解決方案是將數據作為流處理 - 讀取文件的一部分,使用它,然后重復。

最好的選擇似乎是使用像ijson這樣的模塊 - 一個可以將JSON用作流的模塊,而不是塊文件。


查看完整回答
反對 回復 2019-08-12
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

如果JSON文件是一個巨大的列表(例如),那么將其解析為Python在沒有一次完成所有操作的情況下就沒有多大意義。我想你最好的辦法是找到一個像SAX一樣處理JSON的模塊,并為你提供啟動數組和東西的事件,而不是給你對象。不幸的是,標準庫中不存在這種情況。

查看完整回答
反對 回復 2019-08-12
  • 2 回答
  • 0 關注
  • 3874 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號