我的编程空间,编程开发者的网络收藏夹
学习永远不晚

基于python的protobuf简介及

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

基于python的protobuf简介及

Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。

1、安装protobuf
安装以及在python下使用protobuf,要求python版本必须>2.6。

a) Windows

打开网页下载最新版的protobuf-python-3.5.1.zipprotoc-3.5.1-win32.zip

解压文件后,将protoc-3.5.1-win32\bin\protoc.exe 复制到protobuf-3.5.1\class="lazy" data-src,然后进入目录protobuf-3.5.1\python\,运行命令:

  • python setup.py build //生成大量*.py

  • python setup.py install

b) Linux
打开网页下载最新版的protobuf-python-3.5.1.tar.gz,然后在当前目录下执行下述代码:
# 安装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中的struct

message 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')


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

基于python的protobuf简介及

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

基于python的protobuf简介及

Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做
2023-01-31

python基础--protobuf的使

protobuf2/3语法介绍protobuf2语法介绍protobuf3语法介绍安装linux安装Mac安装一个完整的例子一个完整的例子(进阶版)protobuf2/3语法介绍Protobuf(Google Protocol Buffer
2023-01-31

基于Spring MVC 简介及入门小例子(推荐)

一、什么是 Spring MVCSpring MVC 属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 里面,是一个强大灵活的 Web 框架。Spring MVC 提供了一个 Dispatcher
2023-05-31

基于python tkinter的简单计

import tkinter#定义计算器类class Calc:#初始化魔术方法def __init__(self):#初始化共用属性#定义一个用于存放被计算字符串的列表self.operationList = []#定义运算标记 确定是否
2023-01-31

Python基础知识(一)—简介

一、Python 简介Python定义:是一个免费、开源、跨平台、动态、面向对象的编程语言。Python程序的执行(运行)方式有两种:交互式、文件式交互式在命令行输入指令,回城即可得到结果。1.打开终端2.进行交互式:python33.编写
2023-01-31

python基础学习-socket简介

导读socket简介,套接字可以看成是两个网络应用程序进行通信时,各自通信连接中的一个端点。通信时,其中的一个网络应用程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过网络接口卡的传输介质将这段信息发送给另一台主机的S
2023-06-02

基于spyder的python教程(spyder的基本介绍)

Spyder是一个基于Python的科学计算集成开发环境(IDE),提供了编辑、运行、调试和测试Python程序的功能。它是一个开源软件,可在Windows、macOS和Linux操作系统上使用。Spyder的界面分为多个窗口,包括编辑器、
2023-09-22

基于python中的TCP及UDP(详解)

python中是通过套接字即socket来实现UDP及TCP通信的。有两种套接字面向连接的及无连接的,也就是TCP套接字及UDP套接字。 TCP通信模型创建TCP服务器 伪代码:ss = socket() # 创建服务器套接字 ss.bin
2022-06-04

基于python的简单HTTP服务器实现

HTTP协议请求报文请求头部字段解析响应报文响应头部字段解析响应状态码HTTP服务器实现http协议大概是我们接触的最多的协议了,每打开一个网页,浏览器和服务器之间,使用的就是HTTP协议。HTTP协议属于应用层协议,下一层是运输层。这段时
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录