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 httplib,smtplib使用方法
Sep 06 Python
python爬取网页转换为PDF文件
Jun 07 Python
对django xadmin自定义菜单的实例详解
Jan 03 Python
基于树莓派的语音对话机器人
Jun 17 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
Nov 26 Python
python3 字符串知识点学习笔记
Feb 08 Python
使用Python实现牛顿法求极值
Feb 10 Python
用python实现名片管理系统
Jun 18 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
Jul 14 Python
Python实现加密的RAR文件解压的方法(密码已知)
Sep 11 Python
Python办公自动化之Excel(中)
May 24 Python
Python中time标准库的使用教程
Apr 13 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正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
php class类的用法详细总结
2013/10/17 PHP
PHP抓取及分析网页的方法详解
2016/04/26 PHP
PHP中的表达式简述
2016/05/29 PHP
PHP实现验证码校验功能
2017/11/16 PHP
PHP 模拟登陆功能实例详解
2019/09/10 PHP
如何编写高质量JS代码(续)
2015/02/25 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
js控件Kindeditor实现图片自动上传功能
2020/07/20 Javascript
jQuery图片轮播功能实例代码
2017/01/29 Javascript
node+express+ejs使用模版引擎做的一个示例demo
2017/09/18 Javascript
JavaScript中立即执行函数实例详解
2017/11/04 Javascript
Vue CLI3搭建的项目中路径相关问题的解决
2018/09/17 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
antd design table更改某行数据的样式操作
2020/10/31 Javascript
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
python引用DLL文件的方法
2015/05/11 Python
python处理按钮消息的实例详解
2017/07/11 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
详解python对象之间的交互
2020/09/29 Python
python 模拟登陆163邮箱
2020/12/15 Python
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
美国最大的存储市场:SpareFoot
2018/07/23 全球购物
毕业生找工作的求职信范文
2013/12/24 职场文书
电气工程和自动化自荐信范文
2013/12/25 职场文书
员工培训邀请函
2014/01/11 职场文书
创业资金计划书
2014/02/06 职场文书
中国文明网向国旗敬礼活动精彩寄语2014
2014/09/27 职场文书
企业安全生产规章制度
2015/08/06 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python
Java基础之线程锁相关知识总结
2021/06/30 Java/Android