使用socket.send和str.encode()发送字典

问题描述 投票:0回答:1

我正在尝试用socket.send发送字典,但是这个函数需要二进制字符串,我试图这样做:

test = {"key":"value", "key2":"value2"}
test = str(test).encode()
test.send()

服务器只需做:

dict = client.recv(1024)
dict = dict(dict.decode())

但是当我尝试从字符串中获取字典时,我收到此错误:

ValueError: dictionary update sequence element #0 has length 1; 2 is required

python sockets dictionary
1个回答
0
投票

首先,你通过将名称dict绑定到dict来隐藏内置的client.recv类型,你不能这样做。

现在,dict()构造函数不会将字符串作为参数。您可以使用ast.literal_eval代替:

In [25]: d = '{1: 2, 3: 4}'

In [26]: import ast

In [27]: ast.literal_eval(d)
Out[27]: {1: 2, 3: 4}
© www.soinside.com 2019 - 2024. All rights reserved.