1、创建测试用的proto源文件,如:StudentInfo.proto,内容如下
message StudentInfo{ required int32 id = 1; required string name = 2; optional string email = 3; }
2、cmd命令行进入protobuf源代码文件夹下的src目录下,运行命令:
protoc -I=$SRC_DIR --python_out=$DST_DIR $SRC_DIR/*.proto
本例中StudentInfo.proto放在了src目录中,且编译proto生成的py文件也放在src中,故命令为:protoc -I=./ --python_out=./ StudentInfo.proto
编译成功后,src目录下生成了一个StudentInfo_pb2.py文件:
3、在测试程序中如果要用到上述_pb2.py文件,需要先import到程序中,下面是一个简单的Demo:
import StudentInfo_pb2 import sys pb_send_obj = StudentInfo_pb2.StudentInfo() pb_send_obj.id = 10 pb_send_obj.name = "Lily" pb_send_obj.email = "lily@gmail.com" print pb_send_obj sendDataStr = pb_send_obj.SerializeToString() print "serialized string: ", sendDataStr #----------------------------# # message transmission # #----------------------------# pb_receive_obj = StudentInfo_pb2.StudentInfo() pb_receive_obj.ParseFromString(sendDataStr) print "Parse: " print pb_receive_obj.id print pb_receive_obj.name print pb_receive_obj.email
运行结果如下:
4、序列化和反序列化
python protobuf 模块中常用的序列化和反序列化API如下:
• SerializeToString():将message序列化并返回str类型的结果(str类型只是二进制数据的一个容器而已,而不是文本内容)。如果message没有初始化,抛出message.EncodeError异常。
• SerializePartialToString():将message序列化并返回str类型的结果,但是不检查message是否初始化。
• ParseFromString(data):从给定的二进制str解析得到message对象。
相关推荐
在使用netty进行网络通信协议传输使用protobuf时protobuf编译.proto文件生成JAVA类.zip 包括测试proto3.proto文件,自动protobuf编译.proto文件生成JAVA类
protobuf2.5直接批处理生成proto文件
protobuffer编译器protocol,proto文件编译,grpc编译工具
编译好直接可以使用的protobuf文件。运行bat文件,即可直接生成对应.proto的头文件和源文件
为项目开发了一个proto的自动生成工具,需要把protoc.exe放入protobuf-net/ProtoGen文件夹下面,在protoGen文件夹下面建立out文件夹,out文件夹下面分两个文件,一个java一个csharp,把*.proto文件直接放在ProtoGen...
最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便。乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用。 ply使用 简介 如果你不是从事...
CentOS7环境下编译的protobuf 3.1版本的静态库和动态库,里面包含protoc程序和include目录,经过测试程序 protoc --version 之后终端显示的是当前protobuf的版本号,说明编译的库能够正常使用
protoc(Protobuf解码解密工具)用于无原始类时反编译数据,结构分析。 Probobuf反序列化工具,2020-07-21实测好用,内含使用示例。 包含proboc.exe
1,此文件夹中的protobuf库文件与exe均是在windows10+minGW下编译生成的 2,protobuf版本是3.6.1(源码一并附上) 3,使用说明参考: 3.1,编者环境window10 +qtCreator5.11.1(安装时勾选上minGW); 3.2, ...
mac protobuf 编译proto为java文件的工具
使用QT5.6.0自带的MinGW编译器利用CMake工具编译生成了可用的protobuf3.3.0的静态库文件(.a文件),可在QT windows中使用,还生成了protoc.exe可用来将.proto文件编译生成相应的.cpp和.h文件
fdbus编译代码(涉及protobuf编译)-总结
qt5.9.3 + vs2015,Windows搭建Protobuf3.15编译环境
Protobuf是Google公司内部的混合语言数据标准,全称是Google Protocol Buffer,Protobuf是一种更小...本文将介绍如何将Proto文件编译为Obj-C源码文件,方便在iOS和Mac平台上面,使用Xcode开发并存储解析Protobuf文件。
使用protobuf编译proto为C#,再通过NAnt编译C#为dll,最后使用protobuf编译dll成为序列化dll的过程总结,包含详细的文档及相关说明和截图
这是一个protobuf的编译文件,通过protoc.exe可以对.proto文件进行编译
ulua_proto_config.rar :是已经配好了的目录文件。可以将之放入D:/盘的根目录 LuaFramework_UGUI-master.rar :ulua的原工程,只是修改过Packager.cs脚本,和新增了几个插件 (1) protobuf-net:项目使用的插件,...
tensorflow object detection 用到的protobuf文件转化后的python文件,解压后直接覆盖原始的protos文件夹就行了
protobuf 建立proto文件的依赖编译关系
根据json格式,利用相应的proto文件动态生成protobuf结构,通过配置文件添加proto文件,避免每次添加proto文件都要重新编译。方便测试。