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通过socket查询whois的方法
Jul 18 Python
Python 序列的方法总结
Oct 18 Python
深入理解NumPy简明教程---数组3(组合)
Dec 17 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
Jul 25 Python
Django项目中model的数据处理以及页面交互方法
May 30 Python
python中多层嵌套列表的拆分方法
Jul 02 Python
python中协程实现TCP连接的实例分析
Oct 14 Python
彻彻底底地理解Python中的编码问题
Oct 15 Python
django-初始配置(纯手写)详解
Jul 30 Python
Python实现的爬取豆瓣电影信息功能案例
Sep 15 Python
python 一维二维插值实例
Apr 22 Python
使用pycharm运行flask应用程序的详细教程
Jun 07 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
PHP经典面试题集锦
2015/03/19 PHP
php如何执行非缓冲查询API
2016/07/22 PHP
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
2017/07/03 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
使用laravel和ECharts实现折线图效果的例子
2019/10/09 PHP
jquery弹出框的用法示例(2)
2013/08/26 Javascript
jquery $("#variable") 循环改变variable的值示例
2014/02/23 Javascript
JavaScript中奇葩的假值示例应用
2014/03/11 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
2016/08/02 Javascript
基于JavaScript实现焦点图轮播效果
2017/03/27 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
2017/06/02 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
2017/09/18 NodeJs
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
详细介绍Ruby中的正则表达式
2015/04/10 Python
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
Python实现加密接口测试方法步骤详解
2020/06/05 Python
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
2015/07/24 面试题
技校教师求职简历的自我评价
2013/10/20 职场文书
皮肤科医师岗位职责
2013/12/04 职场文书
幼儿园八一建军节活动方案
2014/08/27 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
践行三严三实心得体会
2014/10/13 职场文书
健康状况证明书
2014/11/26 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
2015年九一八事变纪念活动实施方案
2015/05/06 职场文书
学校捐书活动总结
2015/05/08 职场文书
2015年度合同管理工作总结
2015/05/22 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书