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基础教程之自定义函数介绍
Aug 29 Python
python中__call__方法示例分析
Oct 11 Python
python简单的函数定义和用法实例
May 07 Python
python制作爬虫并将抓取结果保存到excel中
Apr 06 Python
python批量添加zabbix Screens的两个脚本分享
Jan 16 Python
python-Web-flask-视图内容和模板知识点西宁街
Aug 23 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
Nov 11 Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 Python
通过实例解析python描述符原理作用
Jan 22 Python
用python介绍4种常用的单链表翻转的方法小结
Feb 24 Python
Python 改变数组类型为uint8的实现
Apr 09 Python
如何利用pycharm进行代码更新比较
Nov 04 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
redis 队列操作的例子(php)
2012/04/12 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
2013/09/28 PHP
Drupal简体中文语言包安装教程
2014/09/27 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
详解PHP序列化和反序列化原理
2018/01/15 PHP
PHP后期静态绑定之self::限制实例分析
2018/12/21 PHP
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
基于Jquery的温度计动画效果
2010/06/18 Javascript
浅析JavaScript事件和方法
2015/02/28 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
js获取及修改网页背景色和字体色的方法
2015/12/29 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
Vue.js 实现微信公众号菜单编辑器功能(一)
2018/05/08 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
微信小程序的开发范式BeautyWe.js入门详解
2019/07/10 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
[01:50]《我与DAC》之玩家:iG夺冠时的那面红旗
2018/03/29 DOTA
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
Python线程的两种编程方式
2015/04/14 Python
关于反爬虫的一些简单总结
2017/12/13 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
2018/05/04 Python
推荐10款最受Python开发者欢迎的Python IDE
2018/09/16 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
经济学博士求职自荐信范文
2013/11/23 职场文书
简历中求职的个人自我评价
2013/12/03 职场文书
八一建军节部队活动方案
2014/02/04 职场文书
党员教师工作决心书
2014/03/13 职场文书
不服从上级领导安排的检讨书
2014/09/14 职场文书
使用springMVC所需要的pom配置
2021/09/15 Java/Android