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 将二进制文件合并为字符串。
我有很多数据文件(将近 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 将二进制文件合并为字符串。