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+Wordpress制作小说站
Apr 14 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
Sep 06 Python
python中的set实现不重复的排序原理
Jan 24 Python
Python 判断奇数偶数的方法
Dec 20 Python
如何使用Python自动控制windows桌面
Jul 11 Python
Python实现K折交叉验证法的方法步骤
Jul 11 Python
python  文件的基本操作 菜中菜功能的实例代码
Jul 17 Python
PyTorch中permute的用法详解
Dec 30 Python
Python实现AI换脸功能
Apr 10 Python
Python selenium自动化测试模型图解
Apr 15 Python
Python内置异常类型全面汇总
May 28 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
Oct 22 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 文件上传功能实现代码
2009/06/24 PHP
php操作JSON格式数据的实现代码
2011/12/24 PHP
PHP获取中英混合字符串长度的方法
2014/06/07 PHP
php中spl_autoload详解
2014/10/17 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
js function定义函数使用心得
2010/04/15 Javascript
js列举css中所有图标的实现代码
2011/07/04 Javascript
jQuery cdn使用介绍
2013/05/08 Javascript
解析window.open的使用方法总结
2013/06/19 Javascript
JavaScript cookie的设置获取删除详解
2014/02/11 Javascript
基于jquery的手风琴图片展示效果实现方法
2014/12/16 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
使用apifm-wxapi模块中的问题及解决方法
2019/08/05 Javascript
Python max内置函数详细介绍
2016/11/17 Python
对python中return和print的一些理解
2017/08/18 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
Python PIL图片添加字体的例子
2019/08/22 Python
python 实现PIL模块在图片画线写字
2020/05/16 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
python opencv角点检测连线功能的实现代码
2020/11/24 Python
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
Canon佳能美国官方商店:购买数码相机、数码单反相机、镜头和打印机
2016/11/15 全球购物
瑞典廉价机票预订网站:Seat24
2018/06/19 全球购物
伦敦剧院及景点门票:Encore Tickets
2018/07/01 全球购物
COSETTE官网:奢华,每天
2020/03/22 全球购物
初入社会应届生求职信
2013/11/18 职场文书
办公室副主任岗位职责
2013/11/25 职场文书
食品安全检查制度
2014/02/03 职场文书
中专自我鉴定
2014/02/05 职场文书
文案策划求职信
2014/04/14 职场文书
学习与创新自我评价
2015/03/09 职场文书
永中文档在线转换预览基于nginx配置部署方案
2022/06/10 Servers