zoukankan      html  css  js  c++  java
  • Python 序列化与反序列化

    序列化是为了将内存中的字典、列表、集合以及各种对象,保存到一个文件中(字节流)。而反序列化是将字节流转化回原始的对象的一个过程。

    json库

    序列化:json.dumps()

    反序列化:json.loads()

    只能处理字典、列表这些简单的序列化与反序列化。

    pickle库

    处理复杂的序列化与反序列化。

    pickle.dumps()

    pickle.loads()

    只要函数名一样。

    序列化.py

    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

    import pickle
    
    def PoC():
    	print("这是Python反序列化程序代码")
    
    
    f = open("data.txt",'rb')
    data = pickle.loads(f.read())
    data['other']()
    

      

    从输出的结果上看,只要函数名相同就会去执行里面的代码。

    修改PoC函数中的代码,改成打开计算器的,运行后发现可以弹窗计算器。

  • 相关阅读:
    .NET Framework 概述
    .Net笔试(二)
    EF CodeFirst 创建数据库
    C#中的继承
    SqlHelper 基类
    在C#中实现OOP概念
    索引器、委托和事件
    .Net笔试(一)
    HTML标签速记整理W3C
    Java函数调用总结
  • 原文地址:https://www.cnblogs.com/endust/p/12303730.html
Copyright © 2011-2022 走看看