2010-11-05 40 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