Python 序列化与反序列化
序列化是为了将内存中的字典、列表、集合以及各种对象,保存到一个文件中(字节流)。而反序列化是将字节流转化回原始的对象的一个过程。
json库
序列化:json.dumps()
反序列化:json.loads()
只能处理字典、列表这些简单的序列化与反序列化。
pickle库
处理复杂的序列化与反序列化。
pickle.dumps()
pickle.loads()
只要函数名一样。
序列化.py
1 2 3 4 5 6 7 8 9 10 11 12 13 | import pickle def PoC(): print ( "这是Python序列化程序代码" ) data = { 'method' : 'GET' , 'path' : '/index' , 'other' :PoC } with open ( "data.txt" , 'wb' ) as f: f.write(pickle.dumps(data)) |
反序列化.py
1 2 3 4 5 6 7 8 9 | import pickle def PoC(): print ( "这是Python反序列化程序代码" ) f = open ( "data.txt" , 'rb' ) data = pickle.loads(f.read()) data[ 'other' ]() |
从输出的结果上看,只要函数名相同就会去执行里面的代码。
修改PoC函数中的代码,改成打开计算器的,运行后发现可以弹窗计算器。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步