Protobuf是谷歌Google开源的一个序列化框架,他可以将任意文件转化为序列化形式,并通过网络进行传输,是适合大数据进行传输的数据格式。
Releases · protocolbuffers/protobuf · GitHub
protobuf 如何安装?_一只码猴的博客-CSDN博客_protobuf安装
相较链接中下载安装包安装,直接pip install protobuf更为简单
protoc --python_out=. data.proto
import motion_submission_pb2
submission = motion_submission_pb2.MotionChallengeSubmission()
scenario_prediction = submission.scenario_predictions.add()
scenario_prediction.scenario_id = data["scenario_id"][0]
prediction_set = scenario_prediction.single_predictions
根据proto中定义的不同类的层级,从高层级开始实例化,低层级实例化直接使用高层的实例对象
在proto显示可以重复的数据(repeated),在实例化后加.add()
scenario_prediction = submission.scenario_predictions.add()
python中使用 protocol buffer(Protobuf)_whatday的博客-CSDN博客_protocolbuffer python
submission.SerializeToString()
序列化后的文件可以直接通过网络进行传输,也可以保存至文件中
序列化后的数据可以保存至不同类型的文件中,这里以txt为例:
f = open(file_path, "wb")
f.write(submission.SerializeToString())
f.close()
content = submission.SerializeToString()
read = motion_submission_pb2.MotionChallengeSubmission()
read.ParseFromString(content)
print(read)