Python使用pickle进行序列化和反序列化的示例代码


Posted in Python onSeptember 22, 2020

一、说明

早上看到Python使用pickle进行序列化和反序列化,然后发现面临的一个获取不到返回值的框架,似乎可以通过在框架中先序列化,然后在外部进行反序列化的方法来实现。就研究了一下pickle库的具体使用。

本身也没什么复杂,一方面还是怕忘记,另一方面是自从学Java听到反序化这个词开始就有一种莫明其妙的恐具感总觉得是什么高大上的东西。Java反序列化可参见“Java反序列化漏洞实现”。

二、代码实现

import pickle


class BeSerializing:
 def __init__(self):
  self.var = "a test string."

 def print_var(self):
  print(f"self var value is:{self.var}")


class Serializing:
 def do_serializing(self):
  obj = BeSerializing()
  # with的好处是会最后自动释放获取的资源,对于文件就是最后会自己close()
  with open("test_pickle.obj", "wb") as file_handler:
   # 序列化,将对象写到文件
   pickle.dump(obj, file_handler)


class DeSerializing:
 def do_serializing(self):
  with open("test_pickle.obj", "rb") as file_handler:
   # 反序列化,将对象从文件中还原
   # 注意,虽然python的变量不需要使用前先定义类型,但使用时是要被格式化成确定类型的
   # 所以,如果反序列化类和被序列化类不在同一文件中,那么需要将被序列化类import进来,不然会因找不到被反序列化类而反序列化失败
   obj = pickle.load(file_handler)
   print(f"obj type: {type(obj)}\n"
     f"obj.var value: {obj.var}")


if __name__ == "__main__":
 obj_se = Serializing()
 obj_se.do_serializing()
 obj_de = DeSerializing()
 obj_de.do_serializing()

运行结果如下,可以看到成功反序列化并打印出被序列化的对象的变量的值:

Python使用pickle进行序列化和反序列化的示例代码

参考:

https://docs.python.org/3/library/pickle.html

以上就是Python使用pickle进行序列化和反序列化的示例代码的详细内容,更多关于python 序列化和反序列化的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python实现去除下载电影和电视剧文件名中的多余字符的方法
Sep 23 Python
教你学会使用Python正则表达式
Sep 07 Python
Python实现PS滤镜特效之扇形变换效果示例
Jan 26 Python
详解Python中的正则表达式
Jul 08 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
Dec 03 Python
python实现QQ邮箱/163邮箱的邮件发送
Jan 22 Python
Python基本数据结构之字典类型dict用法分析
Jun 08 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
Jan 14 Python
python手写均值滤波
Feb 19 Python
Python实现链表反转的方法分析【迭代法与递归法】
Feb 22 Python
python 如何设置守护进程
Oct 29 Python
Python的代理类实现,控制访问和修改属性的权限你都了解吗
Mar 21 Python
Python如何获取文件路径/目录
Sep 22 #Python
JupyterNotebook 输出窗口的显示效果调整实现
Sep 22 #Python
python 实现压缩和解压缩的示例
Sep 22 #Python
python 无损批量压缩图片(支持保留图片信息)的示例
Sep 22 #Python
Pytho爬虫中Requests设置请求头Headers的方法
Sep 22 #Python
python 线程的五个状态
Sep 22 #Python
python 如何实现遗传算法
Sep 22 #Python
You might like
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
2017/10/26 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
js导航菜单(自写)简单大方
2013/03/28 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
浅谈JS日期(Date)处理函数
2014/12/07 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
2016/11/01 Javascript
JavaScript实现音乐自动切换和轮播
2017/11/05 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
JS面向对象实现飞机大战
2020/08/26 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
Django rest framework实现分页的示例
2018/05/24 Python
tensorflow 实现从checkpoint中获取graph信息
2020/02/10 Python
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
HTML5单选框、复选框、下拉菜单、文本域的实现代码
2020/12/01 HTML / CSS
什么是lambda函数
2013/09/17 面试题
硅酸盐工业控制专业应届生求职信
2013/11/02 职场文书
顶岗实习计划书
2014/01/10 职场文书
读书活动实施方案
2014/03/10 职场文书
新店开张活动方案
2014/08/24 职场文书
会议接待欢迎词范文
2015/01/26 职场文书
2015年世界环境日活动总结
2015/02/11 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书
Python趣味挑战之用pygame实现简单的金币旋转效果
2021/05/31 Python