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

Python 2到3字节/字符串错误,python,string,byte,Python,String,Byte,我正在尝试将为Python2制作的Python库转换为Python3 我在第152行有个错误。在Py2版本中,功能是: def write(self, data): self._write_buffer += data 错误是: TypeError:无法转换“字节” 对象隐式地访问str 我发现我必须解码变量,所以我将函数更改为: def write(self, data): self._write_buffer += data.decode('utf8') 它可以工作,

我正在尝试将为Python2制作的Python库转换为Python3

我在第152行有个错误。在Py2版本中,功能是:


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

TypeError:无法转换“字节” 对象隐式地访问str

我发现我必须解码变量,所以我将函数更改为:


def write(self, data):
    self._write_buffer += data.decode('utf8')
它可以工作,但是我在asyncore库中有另一个错误,它说

(类型)必须是字节或缓冲区,而不是 str


那么,我能做什么呢?

您需要清楚地知道在哪里需要字节,在哪里需要字符串。如果您只需在出现错误的地方添加
decode
encode
,您将玩“打鼹鼠”游戏。在本例中,您正在编写一个套接字实现。套接字处理字节,而不是字符串。所以我认为您的_write_缓冲区应该是一个bytes对象,而不是现在的字符串

第91行应改为:

self._write_buffer = b''

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

那么到底是什么问题呢?好的,谢谢。这就是问题所在。我仍然有一些错误,但我将尝试更正我的文件,以便在需要的地方使用字节。