基于python的protobuf简介及入门
Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。
1、安装protobuf安装以及在python下使用protobuf,要求python版本必须>2.6。a) Windows打开网页下载最新版的protobuf-python-3.5.1.zip和protoc-3.5.1-win32.zip。解压文件后,将protoc-3.5.1-win32\bin\protoc.exe 复制到protobuf-3.5.1\src,然后进入目录protobuf-3.5.1\python\,运行命令:
python setup.py build //生成大量*.py
- python setup.py install
# 安装protobuf tar zxvf protobuf-python-3.5.1.tar.gz cd protobuf-3.5.1 ./configure make make check make install # 验证 protoc --version out:libprotoc 3.5.1 #表示安装成功 # 安装python protobuf模块 cd python python setup.py install # 这一步需要先安装six模块才能正常安装
2、测试
创建一个proto文件test.proto,这实际上是定义数据类型,类似c中的structmessage CDevice { optional int32 devId = 1; optional string name = 2; }该数据类型名为CDevice,其中包含两个属性,一个是int32型的设备Id devId,一个是string型的设备名称 name运行命令,生成test_pb2.py,该py文件需要import到测试程序中。如果proto文件中没有指定生成prot2还是proto3,默认生成proto2。在cmd中输入:
【安装protec.exe的路径】-I=【proto文件所在的文件夹!注意是文件夹路径】 --python_out=【你期待输出的文件路径】【proto文件所在的文件夹+文件名】.proto
protoc -I=./ --python_out=./ test.proto
注意等号两边不要留空格
-I为proto文件的路径,--python_out=./表示在当前路径下由指定的.proto生成python可用的*.py文件import test_pb2
import traceback
import sys
#注:在该py文件中可以查到protobuf的调用方法,主要有序列化和反序列化。中间省略了数据传输部分,数据序列化后可以用rpc、socket或者其他方式传输。
try:
sendData = test_pb2.CDevice()
sendData.devId = 9
sendData.name = 'USB'
sendDataStr = sendData.SerializeToString()
print('SerializeToString:',sendDataStr)
receiveDataStr = sendDataStr
receiveData = test_pb2.CDevice()
receiveData.ParseFromString(receiveDataStr)
print('pares serialize string, return: devId = ', receiveData.devId, ', name = ',receiveData.name )
except Exception, e:
print Exception, ':', e
print traceback.print_exc()
errInfo = sys.exc_info()
print errInfo[0], ':', errInfo[1]
#输出结果:
('SerializeToString:', '\x08\t\x12\x03USB')
('pares serialize string, return: devId = ', 9, ', name = ', u'USB')
- google ProtoBuf 简介入门
- Python简介与入门(基于Python2.7)
- 基于protobuf service使用rpc入门教程
- 基于Protobuf的通讯库--Poppy简介
- protobuf入门教程(一):简介和安装
- 基于Protobuf的通讯库--Poppy简介
- 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:3.技术简介之MinaFilter——LoggingFilter (转)
- 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:6.技术简介之Protobuf
- 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:5.技术简介之Hibernate
- PYTHON开发入门与实战14-基于EXTJS的界面
- protobuf简介和使用
- google protobuf的简介、安装和使用
- Java使用protobuf入门四步骤
- Python爬虫入门笔记:爬虫简介
- python入门(二十六):基于反射模拟Web框架路由系统
- Protobuf,从入门到穿拖鞋
- Google 的开源技术protobuf 简介与例子
- 以小见大——那些基于 protobuf 的五花八门的 RPC(4)
- protobuf语法简介2
- 基于protobuf的RPC实现