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笔记(叁)继续学习
Oct 24 Python
python实现颜色rgb和hex相互转换的函数
Mar 19 Python
Python向Excel中插入图片的简单实现方法
Apr 24 Python
python字符串string的内置方法实例详解
May 14 Python
对python程序内存泄漏调试的记录
Jun 11 Python
Python实现获取系统临时目录及临时文件的方法示例
Jun 26 Python
Python3 解决读取中文文件txt编码的问题
Dec 20 Python
opencv python在视屏上截图功能的实现
Mar 05 Python
Python对象的属性访问过程详解
Mar 05 Python
python传到前端的数据,双引号被转义的问题
Apr 03 Python
在Keras中利用np.random.shuffle()打乱数据集实例
Jun 15 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
Oct 31 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
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
php批量缩放图片的代码[ini参数控制]
2011/02/11 PHP
11个PHP 分页脚本推荐
2011/08/15 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
php设置允许大文件上传示例代码
2014/03/10 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
Javascript & DHTML 实例编程(教程)基础知识
2007/06/02 Javascript
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
javascript 保存文件到本地实现方法
2012/11/29 Javascript
jQuery编辑器KindEditor4.1.4代码高亮显示设置教程
2013/03/01 Javascript
Vue 进阶教程之v-model详解
2017/05/06 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
2017/07/05 jQuery
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
layui 给数据表格加序号的方法
2018/08/20 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
在Django的模型中添加自定义方法的示例
2015/07/21 Python
Python中return语句用法实例分析
2015/08/04 Python
深入理解 Python 中的多线程 新手必看
2016/11/20 Python
机器学习10大经典算法详解
2017/12/07 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
Sneaker Studio匈牙利:购买运动鞋
2018/03/26 全球购物
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
园长自我鉴定
2013/10/06 职场文书
通息工程毕业生自荐信
2013/10/16 职场文书
工商企业管理应届生求职信
2013/11/03 职场文书
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
让生命充满爱演讲稿
2014/05/10 职场文书
客户答谢会活动方案
2014/08/31 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
工人先锋号申报材料
2014/12/29 职场文书
解除劳动合同通知书范本
2015/04/16 职场文书
Python OpenCV实现图像模板匹配详解
2022/04/07 Python