Protocol Buffer - 将具有相同 .proto 文件的二进制数据文件合并到一个文件中

Protocol Buffer - merge binary data files with the same .proto file to the one file

我有很多数据文件(将近 150 个)是根据 Protocol Buffer 的 .proto 方案创建的二进制结构。是否有任何有效的解决方案如何在不丢失任何信息的情况下将所有文件合并为一个大的二进制数据文件?

如果您的方案允许,您可以合并现有数据。

计划

message People {
  repeated Person person = 1;
}
message Person {
  required int32 id = 1;
  required string name = 2;
  optional string email = 3;
}

现有数据

两个现有的二进制文件,每个包含 Person

  • person1.bin
  • person2.bin

Python代码

import p_pb2

people = p_pb2.People()
people.person.add().ParseFromString(open("person1.bin", "rb").read())
people.person.add().ParseFromString(open("person2.bin", "rb").read())
with open("people.bin", "wb") as o:
    o.write(people.SerializeToString())

合并数据

现在文件 people.bin 包含一个 People 实例,其中包括两个 Person 个实例。

感谢@Likor,我可以使用 cat proto1.bin proto1.bin > combined_proto.bin 然后 de-serialize 将二进制文件合并为字符串。