我正在尝试将为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
那么,我该怎么办?
答案 0 :(得分:5)
您需要清楚自己想要字节的位置以及字符串的位置。如果您只是添加decode
和encode
错误出现的地方,那么您将会玩w鼹鼠。在您的情况下,您正在编写套接字实现。套接字处理字节,而不是字符串。所以我认为你的_write_buffer应该是一个字节对象,而不是你现在拥有的字符串。
第91行应更改为:
self._write_buffer = b''
然后你可以从那里开始工作以确保你在整个过程中使用字节。