Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 14, 2016 09:59:40

vetos
Зарегистрирован: 2016-11-09
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг файла с JSON по частям Python

Принимаеться файл в ктором записан 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

Офлайн

#2 Ноя. 14, 2016 13:15:45

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Парсинг файла с JSON по частям Python

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



Офлайн

#3 Ноя. 14, 2016 13:18:59

vetos
Зарегистрирован: 2016-11-09
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг файла с JSON по частям Python

izekia
а почему бы и не загрузить все 200?
На данный момент так и рабоатет.
Просто в дальнейшем предполагается, что таких загрузок одновременно могут быть 10-ки. Никакой памяти не хватит.

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

Спасибо изучу вопрос.

Офлайн

#4 Ноя. 14, 2016 13:32:21

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Парсинг файла с JSON по частям Python

10ки джсонов по 200, а Вы про смену формата не думали?
конечно не знаю всей специфики



Офлайн

#5 Ноя. 14, 2016 13:38:18

vetos
Зарегистрирован: 2016-11-09
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг файла с JSON по частям Python

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

Отредактировано vetos (Ноя. 14, 2016 13:39:07)

Офлайн

#6 Ноя. 14, 2016 13:45:19

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Парсинг файла с JSON по частям Python

просто если это двумерный массив чисел, то ему тем более не нужна наглядность, проще передавать в бинарном виде, как вариант посмотреть на механизмы сериализации типа pickle, все зависит от задачи.



Офлайн

#7 Ноя. 14, 2016 13:48:49

vetos
Зарегистрирован: 2016-11-09
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг файла с JSON по частям Python

izekia
механизмы сериализации типа pickle
эту сериализацию придеться делать на клиенте? тогда под каждого клиента нужно будет подыскивать подходящий сериализатор или формат pickle такой же общий для разных языков?

Офлайн

#8 Ноя. 14, 2016 13:57:55

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Парсинг файла с JSON по частям Python

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.
но это не единственный бинарный сериализатор



Офлайн

#9 Ноя. 14, 2016 14:14:46

vetos
Зарегистрирован: 2016-11-09
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг файла с JSON по частям Python

Я вас понял. Буду думать.
еще почитаю про

izekia
всякие ujson, https://github.com/simplejson/simplejson, rapidjson, yajl
Спасибо.

Офлайн

#10 Ноя. 14, 2016 15:26:03

vetos
Зарегистрирован: 2016-11-09
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг файла с JSON по частям Python

Остановился на yajl. Есть решения для питона.
например https://github.com/kashifrazzaqui/json-streamer
Похоже тема закрыта. Спасибо за наводку.

Отредактировано vetos (Ноя. 14, 2016 15:34:53)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version