Python使用pickle进行序列化和反序列化的示例代码

 更新时间:2020年09月22日 11:41:58   作者:诸子流  
这篇文章主要介绍了Python使用pickle进行序列化和反序列化,帮助大家更好的理解和使用python的pickle库,感兴趣的朋友可以了解下

一、说明

早上看到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()

运行结果如下,可以看到成功反序列化并打印出被序列化的对象的变量的值:

参考:

https://docs.python.org/3/library/pickle.html

以上就是Python使用pickle进行序列化和反序列化的示例代码的详细内容,更多关于python 序列化和反序列化的资料请关注脚本之家其它相关文章!

相关文章

  • pycharm解决关闭flask后依旧可以访问服务的问题

    pycharm解决关闭flask后依旧可以访问服务的问题

    这篇文章主要介绍了pycharm解决关闭flask后依旧可以访问服务的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • TensorFlow实现批量归一化操作的示例

    TensorFlow实现批量归一化操作的示例

    这篇文章主要介绍了TensorFlow实现批量归一化操作的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • 详解Python下Flask-ApScheduler快速指南

    详解Python下Flask-ApScheduler快速指南

    Flask是Python社区非常流行的一个Web开发框架,本文将尝试将介绍APScheduler应用于Flask之中,非常具有实用价值,需要的朋友可以参考下
    2018-11-11
  • Python的functools模块使用及说明

    Python的functools模块使用及说明

    这篇文章主要介绍了Python的functools模块使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • spyder 在控制台(console)执行python文件,debug python程序方式

    spyder 在控制台(console)执行python文件,debug python程序方式

    这篇文章主要介绍了spyder 在控制台(console)执行python文件,debug python程序方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python定时任务框架APScheduler原理及常用代码

    Python定时任务框架APScheduler原理及常用代码

    这篇文章主要介绍了Python定时任务框架APScheduler原理及常用代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Python+Selenium实现表单自动填充和提交

    Python+Selenium实现表单自动填充和提交

    你是不是也厌倦了每天重复表单填写的工作,是时候让技术来帮助我们解放双手了,下面小编就为大家介绍一下如何使用Selenium和Python来自动填充和提交表单
    2023-09-09
  • python中 _、__、__xx__()区别及使用场景

    python中 _、__、__xx__()区别及使用场景

    这篇文章主要介绍了python中 _、__、__xx__() 区别及使用场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • python爬取个性签名的方法

    python爬取个性签名的方法

    这篇文章主要为大家详细介绍了python爬取个性签名的方法,具有一定的参考价值,感兴趣的朋友可以参考一下
    2018-06-06
  • Python 获取当前路径3种方法

    Python 获取当前路径3种方法

    本文主要介绍了Python 获取当前路径3种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01

最新评论