Protocol Buffer学习笔记(Python)

2018-03-27  本文已影响0人  飘逸峰

摘要

项目中引入proto的依赖

【两种方法】:
方法1、 官网下载对应的语言包,这里下载protobuf-python-3.5.1.tar.gz,解压后进入python-protobuf-3.5.1/python目录,执行python3 setup.py install
方法2 、【推荐】命令行执行pip3 install protobuf,此时会下载最新的protobuf版本,如果下载的版本与本地安装的proto命令版本不一致,有可能导致异常,所以此时最好指定要下载的版本号:pip3 install protobuf==3.5.1

【注意】

准备proto文件

生成proto对应的python文件

python中使用protobuf

from proto import OTIpcDef_pb2

otIpcList = OTIpcDef_pb2.OTIpcList()

# list类型数据创建方式
otIpc = otIpcList.otpic.add()
otIpc.CompanyId = "companyId"
otIpc.Source = "Source"
otIpc.IPCType = OTIpcDef_pb2.baseInfoCompany
# list类型数据创建方式
baseInfoCompany = otIpc.baseInfoCompany.add()


# print(type(baseInfoCompany))

baseInfoCompany.Address = 110011
baseInfoCompany.CompanyId = "companyId"
baseInfoCompany.CompanyName = "companyName中文"
baseInfoCompany.Identifier = "identifier"
baseInfoCompany.BusinessScope = "BusinessScope"
baseInfoCompany.ContactAddress = "ContactAddress"
baseInfoCompany.EconomicType = "EconomicType"
baseInfoCompany.RegCapital = "RegCapital"
baseInfoCompany.LegalName = "LegalName"
baseInfoCompany.LegalID = "LegalID"
baseInfoCompany.LegalPhone = "LegalPhone"
baseInfoCompany.State = 0
baseInfoCompany.Flag = 1
baseInfoCompany.UpdateTime = 20180226121212

otIpc2 = otIpcList.otpic.add()
otIpc2.CompanyId = "companyId"
otIpc2.Source = "Source"
otIpc2.IPCType = OTIpcDef_pb2.baseInfoCompanyStat
baseInfoCompanyStat = otIpc2.baseInfoCompanyStat.add()
baseInfoCompanyStat.CompanyId = "companyId"
baseInfoCompanyStat.DriverNum = 10
baseInfoCompanyStat.Flag = 0
baseInfoCompanyStat.UpdateTime = 20180226121212
baseInfoCompanyStat.VehicleNum = 5

print("============================================")

# print(otIpc)
print(otIpcList)
print("============================================")
# 序列化
b = otIpcList.SerializeToString()
# 打印二进制数据
print(b)

print("============================================")

otIpcList2 = OTIpcDef_pb2.OTIpcList()
# 反序列化
otIpcList2.ParseFromString(b)

print(otIpcList2)

上一篇下一篇

猜你喜欢

热点阅读