Python通过TCP发送字典

OHL*_*ÁLÁ 9 python dictionary tcp

我是一个python初学者,我很好奇如何通过TCP发送字典

Gab*_*aru 13

您应该使用以下命令序列化它pickle:

import pickle
dict = {...}
tcp_send(pickle.dumps(dict))
Run Code Online (Sandbox Code Playgroud)

在另一端:

import pickle
dict = pickle.loads(tcp_recieve())
Run Code Online (Sandbox Code Playgroud)

如果另一端不是用python编写的,则可以使用数据序列化格式,如xml,jsonyaml.


Seb*_*olm 10

您可以使用pickle将任何Python对象(包括字典)转换为字节流,然后可以通过TCP发送并在接收端取消选择.

或者,您可以使用json,它不依赖于接收端是Python客户端.

  • Pickle可能是一个坏主意,如果服务器相对自由,谁可以发送数据进行unpickled - 正如文档所述,"pickle模块不是为了防止错误或恶意构造的数据.绝不取消从不受信任的接收数据或未经认证的来源." (2认同)

Jak*_*yer 5

由于无法永远重建对象,因此在通过连接发送数据结构时,Pickle被认为是不安全的。这就是为什么yaml,json或任何其他格式被认为是更可取的原因。