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
那么,我该怎么办?
您需要清楚自己想要字节的位置以及字符串的位置.如果你简单地添加decode,并encode在出现错误,你会打捶一个痣.在您的情况下,您正在编写套接字实现.套接字处理字节,而不是字符串.所以我认为你的_write_buffer应该是一个字节对象,而不是你现在拥有的字符串.
第91行应改为:
self._write_buffer = b''
Run Code Online (Sandbox Code Playgroud)
然后你可以从那里工作,以确保你始终使用字节.