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

Python报TypeError: Can only concatenate str (not "bytes") to str解决方法

错误根因

这是典型的Python 2旧项目迁移到Python 3环境的兼容性报错:

  • Python 2未做文本类型和二进制类型的严格拆分,二进制模式打开的文件调用read(1)返回值为str类型,和代码中初始化的string = ""类型一致,可直接拼接,这也是旧项目原代码能正常运行的原因。
  • Python 3中str是统一的Unicode文本类型,二进制模式下文件读取返回的是独立的bytes类型,两类对象不允许直接拼接。代码中string初始化为str类型,读到的byte是bytes类型,执行string += byte时就会触发该TypeError。
修复方法

优先采用「字节收集+统一解码」的方案,符合Python 3二进制文件操作的规范,同时性能更好,适配模型资源读取的场景:

import struct
def ReadNullTerminatedString(f):
    byte = f.read(1)
    # 初始化为空字节串,和读取返回的类型保持一致
    read_bytes = b""
    while struct.unpack('B', byte)[0] != 0:
        read_bytes += byte
        byte = f.read(1)
    # 旧二进制资源优先使用latin-1解码(覆盖全部单字节值,不会触发编码异常),确认资源为UTF-8编码时可替换为'utf-8'
    return read_bytes.decode('latin-1')

不推荐逐字节解码后拼接的写法,该方式处理大体积模型资源时性能损耗更明显。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:54:32