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 ORM框架SQLAlchemy学习笔记之关系映射实例
Jun 10 Python
Python语言描述连续子数组的最大和
Jan 04 Python
Python根据文件名批量转移图片的方法
Oct 21 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
Jul 17 Python
解决Python对齐文本字符串问题
Aug 28 Python
python 字符串常用方法汇总详解
Sep 16 Python
python线程安全及多进程多线程实现方法详解
Sep 27 Python
基于Python实现拆分和合并GIF动态图
Oct 22 Python
python Qt5实现窗体跟踪鼠标移动
Dec 13 Python
Python谱减法语音降噪实例
Dec 18 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
Apr 22 Python
python 操作mysql数据中fetchone()和fetchall()方式
May 15 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 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
php检测网页是否被百度收录的函数代码
2013/10/09 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
JS复制到剪贴板示例代码
2013/10/30 Javascript
JS刷新当前页面的几种方法总结
2013/12/24 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
jQuery实现平滑滚动到指定锚点的方法
2015/03/20 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
js实现随机8位验证码
2020/07/24 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
[02:42]岂曰无衣,与子同袍!DOTA2致敬每一位守护人
2020/02/17 DOTA
django基础之数据库操作方法(详解)
2017/05/24 Python
Python request设置HTTPS代理代码解析
2018/02/12 Python
python绘制多个曲线的折线图
2020/03/23 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
使用Python+selenium实现第一个自动化测试脚本
2020/03/17 Python
Python小白学习爬虫常用请求报头
2020/06/03 Python
Python控制台实现交互式环境执行
2020/06/09 Python
使用python编写一个语音朗读闹钟功能的示例代码
2020/07/14 Python
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
初二政治教学反思
2014/01/12 职场文书
开业庆典答谢词
2014/01/18 职场文书
表彰大会主持词
2014/03/26 职场文书
酒店管理失职检讨书
2014/09/16 职场文书
合作协议书模板2014
2014/09/26 职场文书
2014年党务公开工作总结
2014/12/09 职场文书
课外活动实习计划
2015/01/19 职场文书