You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python报TypeError: str无法与bytes拼接 附代码求修复方案

报错根因

Python3 对文本类型(str)和二进制字节类型(bytes)做了严格的类型隔离,不允许直接拼接两种不同类型的数据。
代码中socket对象的recv(1024)方法从网络获取的返回值是bytes类型,但reliable_receive方法内初始化的json_data是空字符串""属于str类型,执行拼接操作时就会触发can only concatenate str (not "bytes") to str的TypeError,服务端、客户端的报错都是同一原因导致。

修复方法

将网络收到的字节流先按统一编码解码为字符串,再做拼接和JSON解析即可,修正后的reliable_receive方法代码如下:

def reliable_receive(self):
    json_data = ""
    while True:
        try:
            # 接收字节流后用utf-8解码为字符串,与json_data类型保持一致
            json_data = json_data + self.connection.recv(1024).decode("utf-8")
            return json.loads(json_data)
        except ValueError:
            continue

配套注意事项

  • 收发两端编解码规则必须统一:发送数据时,需要把JSON序列化后的字符串编码为bytes再调用socket的send方法,示例发送逻辑:
    # 发送数据示例
    send_data = json.dumps(["exit"])
    self.connection.send(send_data.encode("utf-8"))
    
  • 如果业务场景需要传输非utf-8编码的内容,把编解码传入的"utf-8"替换为对应字符集即可,两端必须使用相同编码,否则会出现乱码或JSON解析失败。

内容的提问来源于stack exchange,提问作者Pythonboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 06:15:36