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 相关文章推荐
python3使用tkinter实现ui界面简单实例
Jan 10 Python
Python多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
Apr 25 Python
Django与JS交互的示例代码
Aug 23 Python
转换科学计数法的数值字符串为decimal类型的方法
Jul 16 Python
Python模拟简单电梯调度算法示例
Aug 20 Python
pandas取出重复数据的方法
Jul 04 Python
python3反转字符串的3种方法(小结)
Nov 07 Python
Python嵌套函数,作用域与偏函数用法实例分析
Dec 26 Python
在pycharm中为项目导入anacodna环境的操作方法
Feb 12 Python
PyCharm 专业版安装图文教程
Feb 20 Python
如何基于python实现不邻接植花
May 01 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魔术方法与魔术变量、内置方法与内置变量的深入分析
2013/06/03 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
2016/10/17 PHP
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
用javascript模仿ie的自动完成类似自动完成功的表单
2012/12/12 Javascript
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
使用live-server快速搭建本地服务器+自动刷新的方法
2018/03/09 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
使用Python中的tkinter模块作图的方法
2017/02/07 Python
TensorFlow安装及jupyter notebook配置方法
2017/09/08 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
基于Django统计博客文章阅读量
2019/10/29 Python
django-csrf使用和禁用方式
2020/03/13 Python
解决import tensorflow as tf 出错的原因
2020/04/16 Python
HTML5拖拽的简单实例
2016/05/30 HTML / CSS
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
营销专业应届生求职信
2013/11/26 职场文书
人事任命书格式
2014/06/05 职场文书
初中英语教学反思范文
2016/02/15 职场文书
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/04/22 无线电
golang 如何通过反射创建新对象
2021/04/28 Golang
我们认为中短波广播场强仪的最佳组合
2022/04/05 无线电
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技