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检查字符串是否是正确ISBN的方法
Jul 11 Python
Ruby使用eventmachine为HTTP服务器添加文件下载功能
Apr 20 Python
python实现杨辉三角思路
Jul 14 Python
python实现用户答题功能
Jan 17 Python
python print 按逗号或空格分隔的方法
May 02 Python
python去重,一个由dict组成的list的去重示例
Jan 21 Python
Django实现跨域的2种方法
Jul 31 Python
python selenium循环登陆网站的实现
Nov 04 Python
python异常处理和日志处理方式
Dec 24 Python
Python argparse模块使用方法解析
Feb 20 Python
在pycharm中关掉ipython console/PyDev操作
Jun 09 Python
python实现测试工具(二)——简单的ui测试工具
Oct 19 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 socket的讲解与实例分析
2013/06/13 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
2013/06/24 PHP
php中自定义函数dump查看数组信息类似var_dump
2014/01/27 PHP
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
PHP中PDO事务处理操作示例
2018/05/02 PHP
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
jQuery阻止同类型事件小结
2013/04/19 Javascript
js 自动播放的实例代码
2013/11/19 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
使用vue.js开发时一些注意事项
2016/04/27 Javascript
js选项卡的制作方法
2017/01/23 Javascript
Vue中保存用户登录状态实例代码
2017/06/07 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
简单了解JavaScript中常见的反模式
2019/06/21 Javascript
详解elementui之el-image-viewer(图片查看器)
2019/08/30 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
微信小程序仿抖音短视频切换效果的实例代码
2020/06/24 Javascript
js闭包和垃圾回收机制示例详解
2021/03/01 Javascript
Python处理json字符串转化为字典的简单实现
2016/07/07 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
在Python中使用Neo4j的方法
2019/03/14 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
pycharm中显示CSS提示的知识点总结
2019/07/29 Python
详解python pandas 分组统计的方法
2019/07/30 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
python性能测量工具cProfile使用解析
2019/09/26 Python
pytorch中图像的数据格式实例
2020/02/11 Python
监理资料员岗位职责
2014/01/03 职场文书
美术社团活动总结
2014/06/27 职场文书
我爱祖国演讲稿
2014/09/02 职场文书
2014村书记党建工作汇报材料
2014/11/02 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书