Чтение довольно больших файлов json в Python [дубликат]
Возможные Дубликаты:
есть ли эффективный и быстрый способ загрузки больших файлов json в python?
Итак, у меня есть несколько довольно больших файлов в кодировке json. Самый маленький-300 МБ, но это, безусловно, самый маленький. Остальные-это несколько ГБ, где-то от 2 ГБ до 10 ГБ+.
Так что я, кажется, не хватает памяти при попытке загрузить файл с Python. В настоящее время я просто запускаю некоторые тесты, чтобы примерно узнать, как долго дело с этим материалом собирается взять, чтобы посмотреть, куда идти отсюда. Вот код, который я использую для проверки:
from datetime import datetime
import json
print datetime.now()
f = open('file.json', 'r')
json.load(f)
f.close()
print datetime.now()
не слишком удивительно, что Python дает мне MemoryError. Похоже, что json.load () вызывает json.загружает (f. read ()), который сначала пытается сбросить весь файл в память, что явно не сработает.
Как я могу решить это чисто?
Я знаю, что это старый, но я не думаю, что это дубликат. Хотя ответ один и тот же вопрос быть другой. В "дубликате" вопрос заключается в том, как эффективно читать большие файлы, тогда как этот вопрос имеет дело с файлами, которые даже не вписываются в память вообще. Эффективность не требуется.
1 ответ:
лучший вариант, кажется, использует что-то вроде ijson - модуль, который будет работать с JSON как поток, а не как заблокировать файл.
Edit: также стоит посмотреть -комментарий Кашифа о
json-streamer.
Comments