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 命令行也可以自动补全
Nov 30 Python
Python实现基于权重的随机数2种方法
Apr 28 Python
Python实现生成随机数据插入mysql数据库的方法
Dec 25 Python
Python之多线程爬虫抓取网页图片的示例代码
Jan 10 Python
DataFrame中的object转换成float的方法
Apr 10 Python
Python中list查询及所需时间计算操作示例
Jun 21 Python
Python3爬虫学习入门教程
Dec 11 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
May 15 Python
matplotlib.pyplot画图并导出保存的实例
Dec 07 Python
python zip,lambda,map函数代码实例
Apr 04 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
Nov 09 Python
pandas时间序列之pd.to_datetime()的实现
Jun 16 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 无法加载mysql的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
PHP5.3以上版本安装ZendOptimizer扩展
2015/03/27 PHP
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
JavaScript Date对象使用总结
2009/05/14 Javascript
js下将字符串当函数执行的方法
2011/07/13 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
拖动table标题实现改变td的大小(css+js代码)
2013/04/16 Javascript
基于JavaScript 下namespace 功能的简单分析
2013/07/05 Javascript
js或jquery实现页面打印可局部打印
2014/03/27 Javascript
jquery插件之定时查询待处理任务数量
2014/05/01 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
2015/09/05 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
Angular2入门--架构总览
2017/03/29 Javascript
微信小程序input框中加入小图标的实现方法
2018/06/19 Javascript
[40:12]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
Python基于time模块求程序运行时间的方法
2017/09/18 Python
通过PYTHON来实现图像分割详解
2019/06/26 Python
django实现将后台model对象转换成json对象并传递给前端jquery
2020/03/16 Python
Django调用支付宝接口代码实例详解
2020/04/04 Python
利用CSS3实现的文字定时向上滚动
2016/08/29 HTML / CSS
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
丝芙兰加拿大官方网站:SEPHORA加拿大
2018/11/20 全球购物
中餐厅主管的职责范文
2014/02/04 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
开工仪式策划方案
2014/05/23 职场文书
高中学生自我评价范文
2014/09/23 职场文书
个人向公司借款协议书
2014/10/09 职场文书
《水浒传》读后感3篇(范文)
2019/09/19 职场文书
导游词之山西-五老峰
2019/10/07 职场文书
Mysql案例刨析事务隔离级别
2021/09/25 MySQL