设置对象没有属性'编码'在套接字模块中

时间:2018-05-12 10:40:52

标签: python sockets encode

我试图对一个set对象进行编码,但它没有做到这一点,声称有一个AttributeError代码。 有没有办法让它发挥作用?

注意:我一直在使用套接字模块。

albums = set()
for key, val in data.items():
    albums.add(val['album'])
msg = albums.encode()

2 个答案:

答案 0 :(得分:1)

您是否尝试通过套接字发送某种形式的Navigation.PopModalAsync(true);表示形式?然后,您首先需要该对象的二进制表示。使用albums表示您需要.encode()的字符串表示形式,您可以使用albumns获取该字符串。

答案 1 :(得分:0)

这里有一些选项,但最简单的方法是使用Python pickle协议对字典进行编码。

为此,请使用发送代码,如下所示:

import pickle
data_to_send = pickle.dumps(albums)
mysocket.send(data_to_send)

接收代码,如下所示:

import pickle
albums = pickle.loads(data_received_from_socket)

但是,我想警告你:使用socket模块是一堆蠕虫。它是低级别的,适合有经验的程序员。与您刚刚提出的问题相比,您必须处理的其他问题可能要困难得多。例如,在确定要传递的内容之前,您必须考虑how to delimit your messages作为socket.recv的第二个参数(bufsize参数)。

我建议您尝试更高级别的内容,例如Python的xmlrpc模块。