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实现统计英文单词个数及字符串分割代码
May 28 Python
使用pyecharts在jupyter notebook上绘图
Apr 23 Python
Python实现希尔排序算法的原理与用法实例分析
Nov 23 Python
对python中array.sum(axis=?)的用法介绍
Jun 28 Python
Python爬虫将爬取的图片写入world文档的方法
Nov 07 Python
pyqt5 QProgressBar清空进度条的实例
Jun 21 Python
python监控nginx端口和进程状态
Sep 06 Python
python数值基础知识浅析
Nov 19 Python
python实现简单飞行棋
Feb 06 Python
python 生成器需注意的小问题
Sep 29 Python
pytorch 如何使用float64训练
May 24 Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
Jun 09 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
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
数字转英文
2006/12/06 PHP
php 格式化数字的时候注意数字的范围
2010/04/13 PHP
整理php防注入和XSS攻击通用过滤
2015/09/13 PHP
PHP后台备份MySQL数据库的源码实例
2019/03/18 PHP
Laravel 数据库加密及数据库表前缀配置方法
2019/10/10 PHP
用js获取电脑信息(是使用与IE浏览器)
2013/01/15 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
jquery自定义类似$.ajax()的方法实现代码
2013/08/13 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
js实现支持手机滑动切换的轮播图片效果实例
2015/04/29 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
[27:39]Ti4 循环赛第二日 LGD vs Fnatic
2014/07/11 DOTA
Python实现命令行通讯录实例教程
2016/08/18 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
2018/12/20 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
python连接PostgreSQL过程解析
2020/02/09 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
2020/03/11 Python
JustFab加拿大:女鞋、靴子、手袋和服装在线
2018/05/18 全球购物
Exception类的常用方法
2012/06/16 面试题
优秀女职工事迹材料
2014/02/06 职场文书
幼儿园教师自我鉴定
2014/03/20 职场文书
《青山处处埋忠骨》教学反思
2014/04/22 职场文书
2014年语文教研组工作总结
2014/12/06 职场文书
评先进个人材料
2014/12/29 职场文书
二手房购房意向书
2015/05/09 职场文书
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android