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中的yield浅析
Jun 16 Python
python标准算法实现数组全排列的方法
Mar 17 Python
Python找出文件中使用率最高的汉字实例详解
Jun 03 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
Dec 14 Python
python实现简单登陆流程的方法
Apr 22 Python
python 读取txt,json和hdf5文件的实例
Jun 05 Python
利用python实现对web服务器的目录探测的方法
Feb 26 Python
在python中利用try..except来代替if..else的用法
Dec 19 Python
python add_argument()用法解析
Jan 29 Python
Django User 模块之 AbstractUser 扩展详解
Mar 11 Python
Python基于BeautifulSoup爬取京东商品信息
Jun 01 Python
Selenium关闭INFO:CONSOLE提示的解决
Dec 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.ini实现Mysql导入数据库文件最大限制的修改方法
2007/12/11 PHP
基于php伪静态的实现详细介绍
2013/04/28 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
2019/09/16 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
2011/10/16 Javascript
iphone safari不支持position fixed的解决方法
2012/05/04 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
nodejs个人博客开发第四步 数据模型
2017/04/12 NodeJs
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
Vue.js实现的计算器功能完整示例
2018/07/11 Javascript
package.json配置文件构成详解
2019/08/27 Javascript
[01:36:57]【09DOTA2第一视角】小骷髅
2014/04/16 DOTA
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
Python警察与小偷的实现之一客户端与服务端通信实例
2014/10/09 Python
python获取各操作系统硬件信息的方法
2015/06/03 Python
qpython3 读取安卓lastpass Cookies
2016/06/19 Python
Python中修改字符串的四种方法
2018/11/02 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
2020/06/09 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
Python数据模型与Python对象模型的相关总结
2021/01/26 Python
html5实现canvas阴影效果示例
2014/05/07 HTML / CSS
Html5 audio标签样式的修改
2016/01/28 HTML / CSS
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
大专生毕业的自我评价
2014/02/06 职场文书
竞争上岗实施方案
2014/03/21 职场文书
中国梦演讲稿教师篇
2014/04/23 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
小学生暑假生活总结
2015/07/13 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang