【Protobuf】使用Python实现Protobuf数据框架

        Protobuf是谷歌Google开源的一个序列化框架,他可以将任意文件转化为序列化形式,并通过网络进行传输,是适合大数据进行传输的数据格式。

在Python上Protobuf的使用流程:

1.安装Protoc,因为Protubuf在Python上需要用c编译加速

Releases · protocolbuffers/protobuf · GitHub

2.安装合适版本的Protobuf

protobuf 如何安装?_一只码猴的博客-CSDN博客_protobuf安装

相较链接中下载安装包安装,直接pip install protobuf更为简单

3.编写.proto文件

4.编译.proto文件生成.py文件

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()

5.序列化数据

python中使用 protocol buffer(Protobuf)_whatday的博客-CSDN博客_protocolbuffer python

submission.SerializeToString()

序列化后的文件可以直接通过网络进行传输,也可以保存至文件中

6.将序列化数据保存在文件中(可选)

序列化后的数据可以保存至不同类型的文件中,这里以txt为例:

f = open(file_path, "wb")
f.write(submission.SerializeToString())
f.close()

7.反序列化读取数据

content = submission.SerializeToString()
read = motion_submission_pb2.MotionChallengeSubmission()
read.ParseFromString(content)
print(read)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值