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检查指定文件是否存在的方法
Jul 06 Python
利用Python画ROC曲线和AUC值计算
Sep 19 Python
python之matplotlib学习绘制动态更新图实例代码
Jan 23 Python
对python字典元素的添加与修改方法详解
Jul 06 Python
python集合比较(交集,并集,差集)方法详解
Sep 13 Python
Django model序列化为json的方法示例
Oct 16 Python
如何使用python爬虫爬取要登陆的网站
Jul 12 Python
pytorch 实现查看网络中的参数
Jan 06 Python
基于python实现语音录入识别代码实例
Jan 17 Python
Python reversed函数及使用方法解析
Mar 17 Python
Python基础之字符串格式化详解
Apr 21 Python
Python实现的扫码工具居然这么好用!
Jun 07 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
一个PHP模板,主要想体现一下思路
2006/12/25 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
jquery div 居中技巧应用介绍
2012/11/24 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
vuejs 动态添加input框的实例讲解
2018/08/24 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
详解Node.js使用token进行认证的简单示例
2020/05/25 Javascript
WebPack工具运行原理及入门教程
2020/12/02 Javascript
Python调用C# Com dll组件实战教程
2017/10/12 Python
破解安装Pycharm的方法
2018/10/19 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
Python中的枚举类型示例介绍
2019/01/09 Python
python-itchat 获取微信群用户信息的实例
2019/02/21 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
在echarts中图例legend和坐标系grid实现左右布局实例
2020/05/16 Python
keras处理欠拟合和过拟合的实例讲解
2020/05/25 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
详解python内置模块urllib
2020/09/09 Python
python爬取微博评论的实例讲解
2021/01/15 Python
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
详解html5 shiv.js和respond.min.js
2018/01/24 HTML / CSS
阿迪达斯希腊官方网上商店:adidas希腊
2019/04/06 全球购物
Hotels.com日本:国外和海外住宿,酒店预订
2019/12/13 全球购物
标准自荐信范文
2014/01/29 职场文书
招聘与培训专员岗位职责
2014/01/30 职场文书
2015年依法治校工作总结
2015/07/27 职场文书