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局部赋值的规则
Mar 07 Python
Python 元组(Tuple)操作详解
Mar 11 Python
python处理文本文件并生成指定格式的文件
Jul 31 Python
Python Tkinter GUI编程入门介绍
Mar 10 Python
详解duck typing鸭子类型程序设计与Python的实现示例
Jun 03 Python
利用python程序生成word和PDF文档的方法
Feb 14 Python
Python爬虫实例扒取2345天气预报
Mar 04 Python
解决pandas .to_excel不覆盖已有sheet的问题
Dec 10 Python
python 格式化输出百分号的方法
Jan 20 Python
Python之Class&Object用法详解
Dec 25 Python
浅谈keras中loss与val_loss的关系
Jun 22 Python
python运算符之与用户交互
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 DataGrid 实现代码
2009/08/12 PHP
PHP Stream_*系列函数
2010/08/01 PHP
PHP+JS+rsa数据加密传输实现代码
2011/03/23 PHP
解析PHP中intval()等int转换时的意外异常情况
2013/06/21 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
2015/01/07 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
php实现URL加密解密的方法
2016/11/17 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
jquery插件制作 表单验证实现代码
2012/08/17 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
Ajax请求在数据量大的时候出现超时的解决方法
2014/02/27 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
javascript如何实现暂停功能
2015/11/06 Javascript
详解PHP中pathinfo()函数导致的安全问题
2017/01/05 Javascript
对于js垃圾回收机制的理解
2017/09/14 Javascript
switchery按钮的使用方法
2017/12/18 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
vue draggable resizable gorkys与v-chart使用与总结
2019/09/05 Javascript
layui监听单元格编辑前后交互的例子
2019/09/16 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
Python写的Socks5协议代理服务器
2014/08/06 Python
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
python调用opencv实现猫脸检测功能
2019/01/15 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
python实现Excel文件转换为TXT文件
2019/04/28 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
2019/10/25 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
机械工程师求职自我评价
2013/09/23 职场文书
学术会议主持词
2014/03/17 职场文书
法律意见书范本
2015/06/04 职场文书
养成教育工作总结
2015/08/13 职场文书