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

Jul*_*ner 8 python string byte

我正在尝试将为Python 2制作的Python库转换为Python 3,这是代码.

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


def write(self, data):
    self._write_buffer += data
Run Code Online (Sandbox Code Playgroud)

错误是:

TypeError:无法隐式地将'bytes'对象转换为str

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


def write(self, data):
    self._write_buffer += data.decode('utf8')
Run Code Online (Sandbox Code Playgroud)

它工作但我在asyncore库中有另一个错误说

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

那么,我该怎么办?

Ned*_*der 5

您需要清楚自己想要字节的位置以及字符串的位置.如果你简单地添加decode,并encode在出现错误,你会打捶一个痣.在您的情况下,您正在编写套接字实现.套接字处理字节,而不是字符串.所以我认为你的_write_buffer应该是一个字节对象,而不是你现在拥有的字符串.

第91行应改为:

self._write_buffer = b''
Run Code Online (Sandbox Code Playgroud)

然后你可以从那里工作,以确保你始终使用字节.