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

标签 python string byte

我正在尝试将为 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

那么,我能做什么呢?

最佳答案

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

第 91 行应更改为:

self._write_buffer = b''

然后您可以从那里开始工作,以确保您始终使用字节。

关于Python 2 到 3 个字节/字符串错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4104485/

相关文章:

java - 意外的无限字节循环

python - 使用 Boto3 在 S3 中设置 AWS 内容类型

c++ - 将代码从 EEPROM 写入 char 数组

python - 如何规范pandas数据框的JSON字符串类型列?

C++ 字符串操作/输入

Python正则表达式获得最接近的匹配而没有重复的内容

python - 如果是空格,如何在不删除分隔符的情况下进行拆分

c++ - c++ 中字节的十六进制值到字符串(相当于 od -x 在 linux 中)?

python - 如何用python中的数组值写入文件?

Python:pexpect 不执行 `backtick` 命令