Python: отправить список / диктовать по сети - PullRequest
4 голосов
/ 01 апреля 2010

Я ищу простой способ упаковки / распаковки структур данных для отправки по сети:

на клиенте перед отправкой:

a = ((1,2),(11,22,),(111,222))
message = pack(a)

, а затем на сервере:

a = unpack(message)

Есть ли библиотека, которая могла бы выполнять сборку / распаковку магии?Заранее спасибо

Ответы [ 3 ]

12 голосов
/ 01 апреля 2010

Похоже, JSON может соответствовать всем требованиям. Это просто, и находится в стандартной библиотеке Python .

Возможно, он не слишком рад по поводу кортежей:

>>> import json
>>> a = ((1,2),(11,22,),(111,222))
>>> print a
((1, 2), (11, 22), (111, 222))
>>> message = json.dumps(a)
>>> message
'[[1, 2], [11, 22], [111, 222]]'
>>> b = json.loads(message)
>>> b
[[1, 2], [11, 22], [111, 222]]

Решать вам, является ли это проблемой или нет.

2 голосов
/ 01 апреля 2010

См. pickle - Сериализация объектов Python:

Модуль pickle реализует фундаментальный, но мощный алгоритм для сериализации и десериализации структуры объектов Python.«Pickling» - это процесс, посредством которого иерархия объектов Python преобразуется в поток байтов, а «uncickling» - обратная операция, посредством которой поток байтов преобразуется обратно в иерархию объектов.Травление (и расслоение) также известно как «сериализация», «сортировка» или «выравнивание», однако во избежание путаницы здесь используются термины «травление» и «расслоение».

1 голос
/ 14 мая 2010

ast.literal_eval() сохраняет кортежи:

>>> a = ((1,2),(11,22,),(111,222))
>>> s = repr(a)
>>> import ast
>>> ast.literal_eval(s)
((1, 2), (11, 22), (111, 222))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...