2010-11-05 22 views
8

我想将Python 2制作的Python库转换为Python 3,here is the codePython 2到3字节/字符串错误

我有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') 

它的工作原理,但我有异步库中的另一个错误,它说

(the Type) must be bytes or buffer, not str

那么,我该怎么办?

+0

那么到底是什么问题呢? – 2010-11-05 08:59:14

回答

5

你需要清楚你想要字节的位置以及你想要字符串的位置。如果您只是在错误出现的地方添加decodeencode,您将会玩捶打鼹鼠。在你的情况下,你正在编写一个套接字实现。套接字处理字节,而不是字符串。所以我会认为你的_write_buffer应该是一个字节对象,而不是你现在拥有的字符串。

91行应更改为:

self._write_buffer = b'' 

然后你就可以从那里工作,以确保您在整个使用字节。

+0

好的,谢谢。这是问题所在。我仍然有一些错误,但我会尝试纠正我的文件,以在需要的地方使用字节。 – 2010-11-05 09:55:35