在java中序列化多个protobuf消息,并在Python中反序列化它们

在java中序列化多个protobuf消息,并在Python中反序列化它们,java,python,protocol-buffers,Java,Python,Protocol Buffers,我想把一堆protobuf消息存储在一个文件中,以后再读取它们 在java中,我可以使用“writeDelimitedTo”和“parseDelimitedFrom”来读写文件。但是,我想用Python阅读它,它似乎只有一个“ParseFromString”方法 有些SO问题非常相似,例如,,但这只适用于一条消息:不适用于多条消息。根据原型指南,您需要处理消息的大小: 流式传输多条消息 如果要将多条消息写入单个文件或流,则 由您来跟踪一条消息的结尾和下一条消息的结尾 开始。协议缓冲区连线格式不是

我想把一堆protobuf消息存储在一个文件中,以后再读取它们

在java中,我可以使用“writeDelimitedTo”和“parseDelimitedFrom”来读写文件。但是,我想用Python阅读它,它似乎只有一个“ParseFromString”方法


有些SO问题非常相似,例如,,但这只适用于一条消息:不适用于多条消息。

根据原型指南,您需要处理消息的大小:

流式传输多条消息

如果要将多条消息写入单个文件或流,则 由您来跟踪一条消息的结尾和下一条消息的结尾 开始。协议缓冲区连线格式不是自定界的,因此 协议缓冲区解析器无法确定消息在其 拥有解决此问题的最简单方法是写入 在您编写消息之前,请先阅读每条消息。当你读报纸的时候 返回消息时,您读取大小,然后将字节读入 分离缓冲区,然后从该缓冲区解析。(如果你想避免 将字节复制到单独的缓冲区,请检查CodedInputStream 类(在C++和java中),可以被告知将读取限制为 一定数量的字节。)

一个简单的解决方案是在文件的新行序列化base64中的每个proto

这样,在python上解析和使用它们将非常容易