Python如何实现序列化和反序列化
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本文小编为大家详细介绍"Python如何实现序列化和反序列化",内容详细,步骤清晰,细节处理妥当,希望这篇"Python如何实现序列化和反序列化"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一
千家信息网最后更新 2026年11月01日Python如何实现序列化和反序列化protobuf介绍
安装protobuf
构建python接口
序列化
反序列化
本文小编为大家详细介绍"Python如何实现序列化和反序列化",内容详细,步骤清晰,细节处理妥当,希望这篇"Python如何实现序列化和反序列化"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
我们前后端进行交互的时候可以使用JSON进行交互,但是python应用和python应用之间如果使用JSON来传递数据是一种浪费的行为(JSON传递的信息有限)这个时候我们可以通过protobuf库来将python对象序列化,然后变成二进制数据传输,最后再进行python反序列化得到这个对象。
protobuf介绍
protobuf是一种二进制的序列化格式,相对于json来说体积更小,传输更快。
安装protobuf
安装protobuf的目的主要用来将proto文件编译成python、c、Java可调用的接口。
# 如果gcc版本较低,需要升级gccwget https://main.qcloudimg.com/raw/d7810aaf8b3073fbbc9d4049c21532aa/protobuf-2.6.1.tar.gztar -zxvf protobuf-2.6.1.tar.gz -C /usr/local/ && cd /usr/local/protobuf-2.6.1./configure make && make install# 可以在/etc/profile或者~/.bash_profile末尾设置永久有效export PATH=$PATH:/usr/local/protobuf-2.6.1/bin
使用下面命令查看是否安装成功。
[root@CodeOnTheRoad ~]# protoc --versionlibprotoc 2.6.1
构建python接口
创建cls.proto文件,定义序列化结构:
package cls;message Log{ message Content { required string key = 1; // 每组字段的 key required string value = 2; // 每组字段的 value } required int64 time = 1; // 时间戳,UNIX时间格式 repeated Content contents = 2; // 一条日志里的多个kv组合}message LogTag{ required string key = 1; required string value = 2;}message LogGroup{ repeated Log logs = 1; // 多条日志合成的日志数组 optional string contextFlow = 2; // 目前暂无效用 optional string filename = 3; // 日志文件名 optional string source = 4; // 日志来源,一般使用机器IP repeated LogTag logTags = 5;}message LogGroupList{ repeated LogGroup logGroupList = 1; // 日志组列表}只用下面命令将proto文件转换为python可调用的接口。
protoc cls.proto --python_out=./
执行完后,在此目录下生成cls_pb2.py。
序列化
import cls_pb2 as clsimport time# 构建protoBuf日志内容LogLogGroupList = cls.LogGroupList()LogGroup = LogLogGroupList.logGroupList.add()LogGroup.contextFlow = "1"LogGroup.filename = "python.log"LogGroup.source = "localhost"LogTag = LogGroup.logTags.add()LogTag.key = "key"LogTag.value = "value"Log = LogGroup.logs.add()Log.time = int(round(time.time() * 1000000))Content = Log.contents.add()Content.key = "Hello"Content.value = "World"print(LogLogGroupList)# 序列化data = LogLogGroupList.SerializeToString()print(data)其实就是讲一个protobuf的结构文本序列化成了二进制的形式。
反序列化
反序列化就是将二进制转换成protobuf结构。
# 反序列化LogLogGroupList = cls.LogGroupList()LogLogGroupList.ParseFromString(data)print(LogLogGroupList)读到这里,这篇"Python如何实现序列化和反序列化"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
序列
日志
二进制
文件
内容
接口
文章
结构
命令
字段
对象
就是
数据
时候
时间
格式
可调
传输
应用
妥当
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技海报
上海卓越科技互联网
互联网科技巨头监管
港股互联网科技股
唐信互联网科技
天津摩尔互联网科技
互联网女皇 腾讯科技
奔汉互联网科技
互联网科技公司介绍
国外互联网科技网站
互联网金融科技委员会
多迪互联网科技有限公司
晓花互联网科技有限公司网址
杭州壁岐互联网科技有限公司
为客找房互联网科技公司怎么样
上海创道互联网络科技有限公司
半导体是互联网高科技吗
九思连强互联网电子科技有限公司
三亚科技创新互联网基地
青岛互联网科技园
哈尔滨大商圈互联网科技有限公司
深圳恒合互联网络科技有限公司
丰台科技园 互联网公司
成都互联网科技公司100强
以后互联网后是啥科技
注册互联网科技公司经营范围大全
亳州好赞互联网科技有限公司
陕西九四连强互联网科技有限公司
广西泛欧互联网科技有限公司
互联网科技大佬云集