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程序设计入门(1)基本语法简介
Jun 13 Python
Python中zip()函数用法实例教程
Jul 31 Python
Python引用(import)文件夹下的py文件的方法
Aug 26 Python
pyenv命令管理多个Python版本
Mar 26 Python
python3+PyQt5实现拖放功能
Apr 24 Python
python取数作为临时极大值(极小值)的方法
Oct 15 Python
python json.loads兼容单引号数据的方法
Dec 19 Python
用Python+OpenCV对比图像质量的几种方法
Jul 15 Python
Django框架创建mysql连接与使用示例
Jul 29 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
Aug 22 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
Nov 22 Python
Python Selenium参数配置方法解析
Jan 19 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加密解密的代码
2006/10/09 PHP
PHP 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
理解Javascript的call、apply
2015/12/16 Javascript
JS双击变input框批量修改内容
2016/12/12 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
AngularJS自定义指令之复制指令实现方法
2017/05/18 Javascript
Javascript实现的StopWatch功能示例
2017/06/13 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
2018/08/27 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
[02:15]2014DOTA2国际邀请赛 赛后退役选手回顾
2014/08/01 DOTA
python 编程之twisted详解及简单实例
2017/01/28 Python
python 系统调用的实例详解
2017/07/11 Python
python实现Excel文件转换为TXT文件
2019/04/28 Python
css3实现可滑动跳转的分页插件示例
2014/05/08 HTML / CSS
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
C#面试题问题集
2016/04/02 面试题
应征英语教师求职信
2013/11/27 职场文书
银行员工辞职信范文
2014/01/20 职场文书
劳动实践课感言
2014/02/01 职场文书
酒店秘书求职信范文
2014/02/17 职场文书
家长对孩子的感言
2014/03/10 职场文书
中学生旷课检讨书500字
2014/10/29 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
工作调动申请报告
2015/05/18 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python
SQL Server中的逻辑函数介绍
2022/05/25 SQL Server