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和shell实现的校验IP地址合法性脚本分享
Oct 23 Python
python用来获得图片exif信息的库实例分析
Mar 16 Python
Python的requests网络编程包使用教程
Jul 11 Python
python操作oracle的完整教程分享
Jan 30 Python
Python数据持久化shelve模块用法分析
Jun 29 Python
python环形单链表的约瑟夫问题详解
Sep 27 Python
Tesserocr库的正确安装方式
Oct 19 Python
Python文件读写常见用法总结
Feb 22 Python
Python短信轰炸的代码
Mar 25 Python
详解python程序中的多任务
Sep 16 Python
Django缓存Cache使用详解
Nov 30 Python
Pygame游戏开发之太空射击实战敌人精灵篇
Aug 05 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函数实现分页含文本分页和数字分页
2014/10/23 PHP
php获取当前页面完整URL地址
2015/12/30 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
php使用array_chunk函数将一个数组分割成多个数组
2018/12/05 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
jQuery的一些注意
2006/12/06 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
Bootstrap基础学习
2015/06/16 Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
2015/12/03 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
AngularJS基础 ng-csp 指令详解
2016/08/01 Javascript
JavaScript实现二分查找实例代码
2017/02/22 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
node使用promise替代回调函数
2018/05/07 Javascript
通过jquery toggleClass()属性制作文章段落更改背景颜色
2018/05/21 jQuery
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
初学python的操作难点总结(新手必看篇)
2017/08/03 Python
Python基于生成器迭代实现的八皇后问题示例
2018/05/23 Python
Flask框架Flask-Principal基本用法实例分析
2018/07/23 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
Python实现代码块儿折叠
2020/04/15 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
公司中层干部的自我评价分享
2014/03/01 职场文书
公司演讲稿开场白
2014/08/25 职场文书
七夕情人节问候语
2015/11/11 职场文书
2016年“9.22”世界无车日活动小结
2016/04/05 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
Python基础之元编程知识总结
2021/05/23 Python
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL