Python使用pickle进行序列化和反序列化的示例代码
作者:诸子流 时间:2022-11-17 10:46:22
一、说明
早上看到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
来源:https://www.cnblogs.com/lsdb/p/12561055.html
标签:python,pickle,序列化,反序列化
0
投稿
猜你喜欢
sqlserver数据库导入数据操作详解(图)
2024-01-15 09:00:11
python3中dict.keys().sort()用不了的解决方法
2023-08-16 11:33:54
ORACLE LATERAL-SQL-INJECTION 个人见解
2009-03-04 10:34:00
Selenium多窗口切换解决方案
2021-07-06 14:56:33
python3中确保枚举值代码分析
2023-05-23 17:47:31
python urllib.request模块的使用详解
2023-03-27 18:19:15
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
2022-05-04 15:35:38
SQL Server分析服务性能优化浅析
2010-01-16 13:30:00
Python爬取网页中的图片(搜狗图片)详解
2023-06-24 00:34:45
python使用协程实现并发操作的方法详解
2021-09-24 11:23:10
python如何每天在指定时间段运行程序及关闭程序
2021-08-05 05:42:05
python实现数独算法实例
2022-11-12 05:31:12
Pycharm2022最新版无法换源解决方法
2023-02-09 20:51:55
Python实现数值积分方式
2022-01-23 14:00:37
用DW8制作网页中常用的过度效果
2007-10-16 12:56:00
一文秒懂python中的 \\r 与 end=‘’ 巧妙用法
2022-10-06 08:33:28
美化段落文本 1
2008-05-15 12:24:00
Python多路复用selector模块的基本使用
2021-12-17 08:43:25
Python标准库之循环器(itertools)介绍
2023-09-16 02:41:43
深入理解 ES6中的 Reflect用法
2024-04-16 09:30:44