在Python中阅读protobuf消息文件

lokaqttq  于 2023-01-08  发布在  Python
关注(0)|答案(1)|浏览(274)

我有一个pb文件abc.pb文件。
我需要通过保留其格式读取文件,即不想将pb文件转换为字符串,然后再次重新转换它。
目前我正在尝试选择

with open(data, "rb") as file_handle:
        data = file_handle.read()

但是这个把它转换成字节。如何把它们读成消息。有人能帮忙吗?

b1uwtaje

b1uwtaje1#

Protobuf是一种二进制编码,通常使用模式(类型)来解码消息。
Protobuf类型在proto文件中描述,并被编译(使用protoc)为特定于语言的存根,这些存根可用于编码|解码消息。
请参见Protocol Buffer Basics: Python,其中包含读取消息的示例。
有一些方法可以在没有模式的情况下decode二进制文件,但这更具挑战性。
因此,
或者:查看是否可以获取要解码的pb文件的Python存根
或者:如果您有proto文件,请使用protoc(请参见上面的示例)生成Python桩模块
或者:使用Marc的工具(如上所述)或其他一些库,它们可以为您解码encoded任意消息。

相关问题