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 相关文章推荐
详解C++编程中一元运算符的重载
Jan 19 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
Jun 13 Python
Python网络编程使用select实现socket全双工异步通信功能示例
Apr 09 Python
Python3.7 dataclass使用指南小结
Feb 22 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
Python操作远程服务器 paramiko模块详细介绍
Aug 07 Python
Python字典底层实现原理详解
Dec 18 Python
tensorflow之tf.record实现存浮点数数组
Feb 17 Python
vue学习笔记之动态组件和v-once指令简单示例
Feb 29 Python
python环境下安装opencv库的方法
Mar 05 Python
基于python实现获取网页图片过程解析
May 11 Python
浅谈keras保存模型中的save()和save_weights()区别
May 21 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
全文搜索和替换
2006/10/09 PHP
PHP的一个基础知识 表单提交
2011/07/04 PHP
一个好用的PHP验证码类实例分享
2013/12/27 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
2014/11/22 PHP
php链式操作的实现方式分析
2019/08/12 PHP
Javascript 更新 JavaScript 数组的 uniq 方法
2008/01/23 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
js实现带圆角的两级导航菜单效果代码
2015/08/24 Javascript
实例讲解jquery中mouseleave和mouseout的区别
2016/02/17 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
2017/05/02 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
jQuery实现定时隐藏对话框的方法分析
2018/02/12 jQuery
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
JS立即执行函数功能与用法分析
2019/01/15 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
python样条插值的实现代码
2018/12/17 Python
Python XlsxWriter模块Chart类用法实例分析
2019/03/11 Python
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
世界上最受欢迎的钓鱼诱饵:Rapala
2019/05/02 全球购物
荷兰的时尚市场:To Be Dressed
2019/05/06 全球购物
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
基督教婚礼主持词
2014/03/14 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
大学生党员自我剖析材料
2014/10/06 职场文书
廉洁自律证明
2015/06/24 职场文书
我的生日感言
2015/08/03 职场文书
2021-4-3课程——SQL Server查询【2】
2021/04/05 SQL Server
浅谈Python项目的服务器部署
2021/04/25 Python
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis