Python 2到3个字节/字符串错误

时间:2010-11-05 08:52:32

标签: python string byte

我正在尝试将为Python 2制作的Python库转换为Python 3 here is the code

我在第152行有一个错误。在Py2版本中,函数是:


def write(self, data):
    self._write_buffer += data

错误是:

  

TypeError:无法转换'bytes'   隐含地反对str

我发现我要对变量进行解码,因此我将函数更改为:


def write(self, data):
    self._write_buffer += data.decode('utf8')

它有效,但我在asyncore库中有另一个错误,说

  

(Type)必须是字节或缓冲区,而不是   STR

那么,我该怎么办?

1 个答案:

答案 0 :(得分:5)

您需要清楚自己想要字节的位置以及字符串的位置。如果您只是添加decodeencode错误出现的地方,那么您将会玩w鼹鼠。在您的情况下,您正在编写套接字实现。套接字处理字节,而不是字符串。所以我认为你的_write_buffer应该是一个字节对象,而不是你现在拥有的字符串。

第91行应更改为:

self._write_buffer = b''

然后你可以从那里开始工作以确保你在整个过程中使用字节。