首页 > 解决方案 > Python3x 类型错误

问题描述

以下代码适用于 Python 2.7.x,但不适用于 Python 3.x(不应为 str 类字节对象)我错过了什么吗?有没有更好的方法来为 Python3 做到这一点?

  def vsend(self, framestring):
    totalsent = 0
    metasent = 0
    length =len(framestring)
    lengthstr=str(length).zfill(8)

    while metasent < 8 :

        sent = self.sock.send(lengthstr[metasent:])
        if sent == 0:
            raise RuntimeError("Socket connection broken")
        metasent += sent


    while totalsent < length :
        sent = self.sock.send(framestring[totalsent:])
        if sent == 0:
            raise RuntimeError("Socket connection broken")
        totalsent += sent

错误:send = self.sock.send(lengthstr[metasent:]) TypeError: 需要一个类似字节的对象,而不是 'str' [WARN:0] 终止异步回调

标签: python-3.xtypeerror

解决方案


如错误所述,send需要一个类似字节的对象,而不是字符串。您可以通过encode()ing 将字符串转换为字节,只是不要忘记decode()在接收它的另一端。


推荐阅读