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中的map、reduce和filter浅析
Apr 26 Python
pymongo为mongodb数据库添加索引的方法
May 11 Python
Python实现字典依据value排序
Feb 24 Python
简单实现python聊天程序
Apr 01 Python
基于Python 装饰器装饰类中的方法实例
Apr 21 Python
在python中使用with打开多个文件的方法
Jan 07 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
PySide和PyQt加载ui文件的两种方法
Feb 27 Python
手机使用python操作图片文件(pydroid3)过程详解
Sep 25 Python
python实现控制台输出彩色字体
Apr 05 Python
Python流程控制语句的深入讲解
Jun 15 Python
解决python对齐错误的方法
Jul 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
通过table标签,PHP输出EXCEL的实现方法
2013/07/24 PHP
JS Range HTML文档/文字内容选中、库及应用介绍
2011/05/12 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
js实现背景图片感应鼠标变化的方法
2015/02/28 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
微信js-sdk界面操作接口用法示例
2016/10/12 Javascript
JavaScript数组迭代方法
2017/03/03 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
python中xrange用法分析
2015/04/15 Python
Python排序算法实例代码
2017/08/10 Python
mac安装scrapy并创建项目的实例讲解
2018/06/13 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
Django框架教程之中间件MiddleWare浅析
2019/12/29 Python
python画环形图的方法
2020/03/25 Python
keras输出预测值和真实值方式
2020/06/27 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
澳大利亚手表品牌:Time IV Change
2018/10/06 全球购物
在浏览器端如何得到服务器端响应的XML数据
2012/11/24 面试题
新学期校长寄语
2014/01/18 职场文书
食品工程专业求职信
2014/06/15 职场文书
小学运动会入场词
2015/07/18 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书
2019年健身俱乐部的创业计划书
2019/08/26 职场文书
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server
SpringBoot Http远程调用的方法
2022/08/14 Java/Android