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 相关文章推荐
一条命令解决mac版本python IDLE不能输入中文问题
May 15 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
python实现n个数中选出m个数的方法
Nov 13 Python
Python应用领域和就业形势分析总结
May 14 Python
Django模型序列化返回自然主键值示例代码
Jun 12 Python
通过PYTHON来实现图像分割详解
Jun 26 Python
18个Python脚本可加速你的编码速度(提示和技巧)
Oct 17 Python
如何基于Python批量下载音乐
Nov 11 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
Nov 26 Python
Python编程快速上手——PDF文件操作案例分析
Feb 28 Python
Python按照list dict key进行排序过程解析
Apr 04 Python
python实现简单反弹球游戏
Apr 12 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多重接口的实现方法
2015/06/20 PHP
在IE6下发生Internet Explorer cannot open the Internet site错误
2010/06/21 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
javascript文本框内输入文字倒计数的方法
2015/02/24 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
微信小程序 获取微信OpenId详解及实例代码
2016/10/31 Javascript
遍历js中对象的属性和值的实例
2016/11/21 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
2017/05/25 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
2017/08/29 jQuery
利用Node.js批量抓取高清妹子图片实例教程
2018/08/02 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
vue中移动端调取本地的复制的文本方式
2020/07/18 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
2020/09/11 Javascript
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
[01:20:38]完美世界DOTA2联赛 GXR vs IO 第一场 11.07
2020/11/09 DOTA
详解Python中的__new__()方法的使用
2015/04/09 Python
pandas对指定列进行填充的方法
2018/04/11 Python
pandas数据分组和聚合操作方法
2018/04/11 Python
python利用百度AI实现文字识别功能
2018/11/27 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
python 同时读取多个文件的例子
2019/07/16 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
怎么处理XML的中文问题
2015/03/26 面试题
如何利用find命令查找文件
2015/02/07 面试题
中学生运动会口号
2014/06/07 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
七年级上册语文教学计划
2015/01/22 职场文书
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL