我有很多二进制结构的数据文件(几乎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
组合二进制文件,然后将二进制文件反序列化为字符串。