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检测手机QQ在线状态的脚本代码
Feb 10 Python
python处理Excel xlrd的简单使用
Sep 12 Python
Python实现对一个函数应用多个装饰器的方法示例
Feb 09 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
Mar 02 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
Jul 09 Python
python使用for循环计算0-100的整数的和方法
Feb 01 Python
python多线程并发让两个LED同时亮的方法
Feb 18 Python
python实现nao机器人手臂动作控制
Apr 29 Python
Python求均值,方差,标准差的实例
Jun 29 Python
python爬虫爬取图片的简单代码
Jan 18 Python
Python人工智能之混合高斯模型运动目标检测详解分析
Nov 07 Python
python_tkinter弹出对话框创建
Mar 20 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
一个ubbcode的函数,速度很快.
2006/10/09 PHP
PHP详细彻底学习Smarty
2008/03/27 PHP
PHP 查找字符串常用函数介绍
2012/06/07 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
javascript中的array数组使用技巧
2010/01/31 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
深入理解(function(){... })();
2016/08/16 Javascript
js仿网易表单及时验证功能
2017/03/07 Javascript
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
玩转vue的slot内容分发
2018/09/22 Javascript
js中arguments对象的深入理解
2019/05/14 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
vue.js实现回到顶部动画效果
2019/07/31 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
解决vue-router 切换tab标签关闭时缓存问题
2020/07/22 Javascript
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
python socket 超时设置 errno 10054
2014/07/01 Python
Python实现队列的方法
2015/05/26 Python
Python向MySQL批量插数据的实例讲解
2018/03/31 Python
Python 查找字符在字符串中的位置实例
2018/05/02 Python
浅谈django rest jwt vue 跨域问题
2018/10/26 Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
2019/03/22 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
Django基于Models定制Admin后台实现过程解析
2020/11/11 Python
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
公司年终奖分配方案
2014/06/16 职场文书
2014年辅导员工作总结
2014/11/18 职场文书
退休欢送会主持词
2015/07/01 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书
2019年教师节祝福语精选,给老师送上真诚的祝福
2019/09/09 职场文书
详解SQL报错盲注
2022/07/23 SQL Server