Python使用pickle模块实现序列化功能示例


Posted in Python onJuly 13, 2018

本文实例讲述了Python使用pickle模块实现序列化功能。分享给大家供大家参考,具体如下:

Python内置的pickle模块能够将Python对象序列成字节流,也可以把字节流反序列成对象。

import pickle
class Student:
  def __init__(self, name, age):
    self.name = name
    self.age = age
  def say(self):
    print("I am", self.name)
>>> t = Student('Tom', 23)
>>> t.say()
I am Tom
>>>
>>> save_path = './tom_msg'
>>> with open(save_path, 'wb') as f:    # 字节流写入
...   pickle.dump(t, f)      # 序列化数据保存在文件中
>>>
>>> with open(save_path, 'rb') as f:    # 字节流读出
...   after_t = pickle.load(f)    # 读取文件信息反序列化成对象
...
>>> after_t.__dict__
{'name': 'Tom', 'age': 23}
>>> after_t.say()
I am Tom
>>>
>>>
>>> l = Student('Lisa', 23)
>>> serialized = pickle.dumps(l)
>>> serialized
b'\x80\x03c__main__\nStudent\nq\x00)\x81q\x01}q\x02(X\x04\x00\x00\x00nameq\x03X\x04\x00\x00\x00Lisaq\x04X\x03\x00\x00\x00ageq\x05K\x17ub.'
>>> after_l = pickle.loads(serialized)
>>> after_l.say()
I am Lisa
>>> after_l.__dict__
{'name': 'Lisa', 'age': 23

如果比较复杂的操作(对象属性更变,添加删除),pickle模块可能会出问题,那时候应该结合copyreg来使用

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
Python 序列的方法总结
Oct 18 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
Jan 20 Python
Python内置函数—vars的具体使用方法
Dec 04 Python
python web.py开发httpserver解决跨域问题实例解析
Feb 12 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
May 09 Python
Tensorflow 合并通道及加载子模型的方法
Jul 26 Python
为什么从Python 3.6开始字典有序并效率更高
Jul 15 Python
python中利用matplotlib读取灰度图的例子
Dec 07 Python
python 微信好友特征数据分析及可视化
Jan 07 Python
Pytorch对Himmelblau函数的优化详解
Feb 29 Python
python切割图片的示例
Nov 12 Python
mac下如何将python2.7改为python3
Jul 13 #Python
Python面向对象程序设计之继承与多继承用法分析
Jul 13 #Python
Python2.7环境Flask框架安装简明教程【已测试】
Jul 13 #Python
解决Python print 输出文本显示 gbk 编码错误问题
Jul 13 #Python
Python爬虫实现简单的爬取有道翻译功能示例
Jul 13 #Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
Jul 13 #Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
Jul 13 #Python
You might like
深入了解php4(2)--重访过去
2006/10/09 PHP
php地址引用(php地址引用的效率问题)
2012/03/23 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
PHP读取word文档的方法分析【基于COM组件】
2017/08/01 PHP
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
JS基础之undefined与null的区别分析
2011/08/08 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
Vue.js划分组件的方法
2017/10/29 Javascript
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
解决Layui 表单提交数据为空的问题
2018/08/15 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
Python检测QQ在线状态的方法
2015/05/09 Python
学习python类方法与对象方法
2016/03/15 Python
python 读写txt文件 json文件的实现方法
2016/10/22 Python
python中日志logging模块的性能及多进程详解
2017/07/18 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
python3.7 的新特性详解
2019/07/25 Python
Python  Django 母版和继承解析
2019/08/09 Python
Python图片处理模块PIL操作方法(pillow)
2020/04/07 Python
python 两种方法删除空文件夹
2020/09/29 Python
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
美国在线宠物商店:Chewy
2019/01/12 全球购物
标准化管理实施方案
2014/02/25 职场文书
挂牌仪式策划方案
2014/05/18 职场文书
建筑安全生产目标责任书
2014/07/23 职场文书
开学第一周日记(三篇范文)
2019/08/23 职场文书
Python matplotlib 利用随机函数生成变化图形
2022/04/26 Python