我正在尝试将为 Python 2 制作的 Python 库转换为 Python 3,here is the code .
我在第152行报错,在Py2版本中,函数是:
def write(self, data):
self._write_buffer += data
错误是:
TypeError: Can't convert 'bytes' object to str implicitly
我发现我必须解码变量,所以我将函数更改为:
def write(self, data):
self._write_buffer += data.decode('utf8')
它有效,但我在 asyncore 库中有另一个错误,它说
(the Type) must be bytes or buffer, not str
那么,我能做什么呢?
最佳答案
你需要清楚哪里需要字节,哪里需要字符串。如果您只是在出现错误的地方添加 decode
和 encode
,您将玩打地鼠游戏。在您的情况下,您正在编写一个套接字实现。套接字处理字节,而不是字符串。所以我认为你的 _write_buffer 应该是一个字节对象,而不是你现在拥有的字符串。
第 91 行应更改为:
self._write_buffer = b''
然后您可以从那里开始工作,以确保您始终使用字节。
关于Python 2 到 3 个字节/字符串错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4104485/