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

如何在Python中直接将abc.pb文件读取为Protobuf Message对象?

读取protobuf文件为Message对象的正确方式

你不需要把字节数据转成字符串再反向转换,protobuf的Python API直接支持从字节数据解析出Message对象,步骤如下:

  1. 确保你有对应pb文件的生成类
    首先你需要通过protoc工具,将定义这个pb文件的.proto文件编译成Python类。比如你的proto定义了MyData消息,编译后会生成包含MyData类的Python模块。

  2. 解析字节数据为Message对象
    用你已经写好的代码读取字节数据后,直接调用Message类的ParseFromString()方法(该方法原生接受bytes类型参数)即可:

# 导入编译好的Message类,替换成你实际的模块和类名
from my_proto_module import MyData

# 读取pb文件的字节数据
with open("abc.pb", "rb") as file_handle:
    pb_bytes = file_handle.read()

# 解析为Message对象
target_message = MyData()
target_message.ParseFromString(pb_bytes)

这样得到的target_message就是完整的Message对象,完全保留了pb文件的原始格式和数据,没有多余的转换步骤。

如果需要验证解析结果,可以直接打印对象,或者访问其字段:

print(target_message.some_field)

注意:必须保证编译生成的Python类和pb文件对应的proto定义完全一致,否则会出现解析错误或数据丢失的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:50:20