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使用Image处理图片常用技巧分析
Jun 01 Python
浅谈Python peewee 使用经验
Oct 20 Python
python3读取csv和xlsx文件的实例
Jun 22 Python
对python pandas 画移动平均线的方法详解
Nov 28 Python
python requests 库请求带有文件参数的接口实例
Jan 03 Python
python tkinter canvas使用实例
Nov 04 Python
使用Python测试Ping主机IP和某端口是否开放的实例
Dec 17 Python
Python小白垃圾回收机制入门
Jun 09 Python
基于Python+QT的gui程序开发实现
Jul 03 Python
浅谈pandas dataframe对除数是零的处理
Jul 20 Python
Python三维绘图之Matplotlib库的使用方法
Sep 20 Python
解决import tensorflow导致jupyter内核死亡的问题
Feb 06 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文本数据库的搜索方法
2006/10/09 PHP
php实例分享之mysql数据备份
2014/05/19 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
DEFER怎么用?
2006/07/01 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
jQuery实现的自适应焦点图效果完整实例
2016/08/24 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
快速解决brew安装特定版本flow的问题
2018/05/17 Javascript
Angular4 反向代理Details实践
2018/05/30 Javascript
CentOS7中源码编译安装NodeJS的完整步骤
2018/10/13 NodeJs
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
简单谈谈Python流程控制语句
2016/12/04 Python
手把手教你用python抢票回家过年(代码简单)
2018/01/21 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
python之cv2与图像的载入、显示和保存实例
2018/12/05 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
2020/03/06 Python
如何用python 操作zookeeper
2020/12/28 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
学术会议邀请函范文
2014/01/22 职场文书
2014市府办领导班子“四风问题”对照检查材料思想汇报
2014/09/24 职场文书
省委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
辩论赛新闻稿
2015/07/17 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
Pytorch中的数据集划分&正则化方法
2021/05/27 Python