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导入时小括号大作用
Jan 10 Python
Python实现对字符串的加密解密方法示例
Apr 29 Python
Python sqlite3事务处理方法实例分析
Jun 19 Python
Pycharm远程调试openstack的方法
Nov 21 Python
使用matplotlib中scatter方法画散点图
Mar 19 Python
python flask安装和命令详解
Apr 02 Python
Python实现微信消息防撤回功能的实例代码
Apr 29 Python
Python数据类型之Dict字典实例详解
May 07 Python
Python多继承以及MRO顺序的使用
Nov 11 Python
Python数据分析pandas模块用法实例详解
Nov 20 Python
Python用SSH连接到网络设备
Feb 18 Python
Python3.10的一些新特性原理分析
Sep 15 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数组函数序列之sort() 对数组的元素值进行升序排序
2011/11/02 PHP
超小PHP小马小结(方便查找后门的朋友)
2012/05/05 PHP
php上传中文文件名乱码问题处理方案
2015/02/03 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
PHP 断点续传实例详解
2017/11/11 PHP
符合标准的js表单提交的代码
2007/09/13 Javascript
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
JavaScript代码性能优化总结(推荐)
2016/05/16 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
详解Angular的双向数据绑定(MV-VM)
2016/12/26 Javascript
使用原生的javascript来实现轮播图
2017/02/24 Javascript
Nodejs连接mysql并实现增、删、改、查操作的方法详解
2018/01/04 NodeJs
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
vue.js template模板的使用(仿饿了么布局)
2018/08/13 Javascript
vue中动态添加class类名的方法
2018/09/05 Javascript
vue基础之v-bind属性、class和style用法分析
2019/03/11 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
[35:29]Secret vs VG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
celery4+django2定时任务的实现代码
2018/12/23 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
python tkinter的消息框模块(messagebox,simpledialog)
2020/11/07 Python
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
澳洲的服装老品牌:SABA
2018/02/06 全球购物
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
护理职业应聘自荐书
2013/09/29 职场文书
九年级科学教学反思
2014/01/29 职场文书
基层党员公开承诺书
2014/05/29 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
2015应届毕业生自荐信范文
2015/03/05 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
入党宣誓大会后的感想
2015/08/10 职场文书
学习经验交流会总结
2015/11/02 职场文书