协议缓冲区 - 将具有相同.proto文件的二进制数据文件合并到一个文件中

时间:2015-02-13 10:15:27

标签: python protocol-buffers

我根据协议缓冲区的.proto方案创建了大量二进制结构的数据文件(差不多150个)。有没有有效的解决方案如何将所有文件合并到一个大的二进制数据文件而不会丢失任何信息?

1 个答案:

答案 0 :(得分:1)

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

方案

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个实例。