【问题标题】:Python 2 to 3 bytes/string errorPython 2 到 3 个字节/字符串错误
【发布时间】:2011-05-05 12:08:01
【问题描述】:

我正在尝试将针对 Python 2 制作的 Python 库转换为 Python 3,here is the code

我在第152行有错误。在Py2版本中,函数是:


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

错误是:

TypeError:无法转换“字节” 隐式地指向 str 的对象

我发现我要解码变量,所以我把函数改成:


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

它可以工作,但我在 asyncore 库中有另一个错误,它说

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

那么,我该怎么办?

【问题讨论】:

  • 那么到底有什么问题呢?

标签: python string byte


【解决方案1】:

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

第 91 行应更改为:

self._write_buffer = b''

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

【讨论】:

  • 好的,谢谢。这就是问题所在。我仍然有一些错误,但我会尝试更正我的文件以在任何需要的地方使用字节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多