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 greenlet实现原理和使用示例
Sep 24 Python
Python访问MySQL封装的常用类实例
Nov 11 Python
在PyCharm下使用 ipython 交互式编程的方法
Jan 17 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 Python
初探利用Python进行图文识别(OCR)
Feb 26 Python
Python 利用高德地图api实现经纬度与地址的批量转换
Aug 14 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
Mar 11 Python
Keras中的多分类损失函数用法categorical_crossentropy
Jun 11 Python
Python魔术方法专题
Jun 19 Python
使用python实现下载我们想听的歌曲,速度超快
Jul 09 Python
MATLAB数学建模之画图汇总
Jul 16 Python
python快速安装OpenCV的步骤记录
Feb 22 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安全性漫谈
2012/06/28 PHP
PHP中redis的用法深入解析
2014/02/20 PHP
php获取错误信息的方法
2015/07/17 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
2015/07/31 Javascript
深入浅析JS的数组遍历方法(推荐)
2016/06/15 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
2016/12/08 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
2016/12/26 Javascript
Vuex和前端缓存的整合策略详解
2017/05/09 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
vue实现2048小游戏功能思路详解
2018/05/09 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
js实现盒子移动动画效果
2020/08/09 Javascript
Python中DJANGO简单测试实例
2015/05/11 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
python suds访问webservice服务实现
2020/06/26 Python
Html5 页面适配iPhoneX(就是那么简单)
2019/09/05 HTML / CSS
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
自动化专业职业生涯规划书范文
2014/01/16 职场文书
我的画教学反思
2014/04/28 职场文书
艺术学院毕业生求职信
2014/07/09 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
运动会加油稿20字
2014/11/15 职场文书
三峡导游词
2015/01/31 职场文书
党员个人承诺书
2015/04/27 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
《玩出了名堂》教学反思
2016/02/17 职场文书
redis cluster支持pipeline的实现思路
2021/06/23 Redis
Vue.Draggable实现交换位置
2022/04/07 Vue.js