Найти - Пользователи
Полная версия: Парсинг файла с JSON по частям Python
Начало » Python для новичков » Парсинг файла с JSON по частям Python
1 2
vetos
Принимаеться файл в ктором записан JSON массив. файл может быть большой (до 200МБ). Необходимо проверить массив на соответсвие формату JSON (и еще бы хотелось производить форматирование) и записать в файл в хранилище. В память все 200МБ загружать не хочется.
Подскажите, как это сделать по частям, так сказать, перекачать данные из одного файла в другой не загружая весь файл в память.
Например

[
[
1234,
1234,
1234,
465
],
[
1234,
1234,
1234,
1234
],
[
1234,
1234,
1234,
1234
],
[
1234,
1234,
1234,
1234
]
]

Нужно получить.

1234,1234,1234,465
1234,1234,1234,1234
1234,1234,1234,1234
1234,1234,1234,1234
izekia
а почему бы и не загрузить все 200?
и помимо стандартной реализации существуют всякие ujson, https://github.com/simplejson/simplejson, rapidjson, yajl
последняя вроде как может парсить поток, про остальные не в курсе
vetos
izekia
а почему бы и не загрузить все 200?
На данный момент так и рабоатет.
Просто в дальнейшем предполагается, что таких загрузок одновременно могут быть 10-ки. Никакой памяти не хватит.

izekia
и помимо стандартной реализации существуют всякие ujson, https://github.com/simplejson/simplejson, rapidjson, yajl
последняя вроде как может парсить поток, про остальные не в курсе

Спасибо изучу вопрос.
izekia
10ки джсонов по 200, а Вы про смену формата не думали?
конечно не знаю всей специфики
vetos
izekia
10ки джсонов по 200, а Вы про смену формата не думали?
я только изучаю питон. когда начал выплнять уже понял что тут что-то не то, но такое ТЗ. нужно передавать массив массивов чисел в формате JSON - массива.
Буду рад советам по изменению структуры данных.
izekia
просто если это двумерный массив чисел, то ему тем более не нужна наглядность, проще передавать в бинарном виде, как вариант посмотреть на механизмы сериализации типа pickle, все зависит от задачи.
vetos
izekia
механизмы сериализации типа pickle
эту сериализацию придеться делать на клиенте? тогда под каждого клиента нужно будет подыскивать подходящий сериализатор или формат pickle такой же общий для разных языков?
izekia
vetos
эту сериализацию придеться делать на клиенте? тогда под каждого клиента нужно будет подыскивать подходящий сериализатор или формат pickle такой же общий для разных языков?
я не знаю задачи и не могу ничего сказать

про формат pickle примерно так:
The data format used by pickle is Python-specific. This has the advantage that there are no restrictions imposed by external standards such as JSON or XDR (which can’t represent pointer sharing); however it means that non-Python programs may not be able to reconstruct pickled Python objects.
но это не единственный бинарный сериализатор
vetos
Я вас понял. Буду думать.
еще почитаю про
izekia
всякие ujson, https://github.com/simplejson/simplejson, rapidjson, yajl
Спасибо.
vetos
Остановился на yajl. Есть решения для питона.
например https://github.com/kashifrazzaqui/json-streamer
Похоже тема закрыта. Спасибо за наводку.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB