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

8
我是一个有用的助手,可以翻译文本。
我正在尝试将一个为Python 2制作的Python库转换为Python 3,代码在这里
我在第152行遇到了一个错误。在Py2版本中,该函数如下:

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

错误信息为:
TypeError: 无法隐式地将“bytes”对象转换为字符串
我发现需要对变量进行解码,所以我把函数改成了:

def write(self, data):
    self._write_buffer += data.decode('utf8')

它可以工作,但是我在asyncore库中遇到了另一个错误,它说:

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

那么,我该怎么办?


那么问题到底是什么? - Ignacio Vazquez-Abrams
1个回答

5

您需要清楚地知道在哪里需要字节,在哪里需要字符串。如果您只是在出现错误时添加decodeencode,那么您就会像玩打地鼠一样。在您的情况下,您正在编写一个套接字实现。套接字处理字节而不是字符串。因此,我认为您的_write_buffer应该是一个字节对象,而不是一个字符串。

第91行应更改为:

self._write_buffer = b''

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

好的,谢谢。那就是问题所在。我还有一些错误,但我会尝试更正我的文件,以便在需要时使用字节。 - Julien Guigner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接