我正在決議一個包含物件陣列的大型 JSON 檔案,并將資料寫入 Python 的 csv 檔案中。JSON 檔案大小為 50GB,我在加載檔案時在線收到記憶體錯誤 (data = json.load(data_file))。
當我以大約 4GB 及以下的檔案大小運行時,代碼成功運行。當我以 50 GB 或更大的檔案大小運行時,如何解決記憶體錯誤?
JSON 檔案結構:
[
{"name":"Haks",
"age":"22",
"other":{
"weight":"100"
}
},
{"name":"Kahs",
"age":"38"
"other":{
"weight":"120"
}
},
.....
]
代碼:
import json
import csv
with open('C:/Users/username/filename.json') as data_file
data = json.load(data_file)
arr = []
for x in data:
obj = []
obj['name'] = x['name']
obj['age'] = x['age']
obj['weight']= x['other']['weight']
arr.append(obj)
keys = arr[0].keys()
with open('json_output.csv', 'w',newline='') as csvfile:
writer = csv.DictWriter(csvfile, keys)
writer.writeheader()
for item in arr:
writer.writerow(item)
uj5u.com熱心網友回復:
您需要一個不會將所有資料加載到 RAM 中的 JSON 決議器。此類別庫的一些示例是ijson、yajl-py、bigjson。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/383609.html
