我正在尝试用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
首先,你通过将名称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}