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

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函数中的代码,改成打开计算器的,运行后发现可以弹窗计算器。

Python 序列化与反序列化的更多相关文章

  1. Python序列化和反序列化

    Python序列化和反序列化 通过将对象序列化可以将其存储在变量或者文件中,可以保存当时对象的状态,实现其生命周期的延长.并且需要时可以再次将这个对象读取出来.Python中有几个常用模块可实现这一功 ...

  2. python序列化与反序列化(json与pickle)

    在python中,序列化可以理解为将python中对象的编码格式转换为json(pickle)格式的字符串,而反序列化可以 理解为将json(pickle)格式的字符串转换为python中对象的编码格 ...

  3. Python—序列化和反序列化模块(json、pickle和shelve)

    什么是序列化 我们把对象(或者变量)从内存中变为可存储或者可传输的过程称为序列化.在python中为pickling,在其他语言中也被称之为serialization,marshalling,flat ...

  4. python序列化与反序列化(json、pickle)-(五)

    1.什么是序列化&反序列化? 序列化:将字典.列表.类的实例对象等内容转换成一个字符串的过程. 反序列化:将一个字符串转换成字典.列表.类的实例对象等内容的过程 PS:Python中常见的数据 ...

  5. python 序列化和反序列化

    概念 序列化: 将对象的状态信息转换为可以存储或传输的形式的过程.就是把对象转换成字符串的过程 反序列化: 把字符串转换成python可以识别的数据类型对象的过程 应用 #数据存储 #网络传输 模块 ...

  6. python 序列化,反序列化

    附: pickle 有大量的配置选项和一些棘手的问题.对于最常见的使用场景,你不需要去担心这个,是如果你要在一个重要的程序中使用pickle 去做序列化的话,最好去查阅一下官方文档. https:// ...

  7. Python序列化与反序列化-json与pickle

    Python序列化与反序列化-json与pickle 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.json的序列化方式与反序列化方式 1>.json序列化 #!/usr ...

  8. Python序列化和反序列化vsJSON

    # -*- coding: utf-8 -* """没有嵌套类的类 author: Jill usage: """ import json ...

  9. Python库:序列化和反序列化模块pickle介绍

    1 前言 在“通过简单示例来理解什么是机器学习”这篇文章里提到了pickle库的使用,本文来做进一步的阐述. 通过简单示例来理解什么是机器学习 pickle是python语言的一个标准模块,安装pyt ...

随机推荐

  1. .NetCore学习笔记:四、AutoMapper对象映射

    什么是AutoMapper?AutoMapper是一个简单的小型库,用于解决一个看似复杂的问题 - 摆脱将一个对象映射到另一个对象的代码.这种类型的代码是相当沉闷和无聊的写,所以为什么不发明一个工具来 ...

  2. 面向对象+闭包+三种对象的声明方式(字面式、new Object、构造函数、工厂模式、原型模式、混合模式)

    面向对象: 对代码的一种抽象,对外统一提供调用接口的编程思想 对象的属性:事物自身拥有的东西 对象的方法:事物的功能 对象:事物的一个实例 对象的原型:.prototype -> 内存地址 -& ...

  3. 电信IOT平台固件升级

    1 离线签名 注意事项:特别重要,被坑了好久 A  将差分文件.bin格式的压缩成.zip 再进行签名    B  不能再中文目录下 否则,会出现校验失败 记住私钥 2 上传公钥 3 上传固件包 4 ...

  4. javascript生成指定位数的随机数

    <script type="text/javascript"> document.write("请输入要生成随机数的位数:"); // digit是 ...

  5. Android(安卓)全套开发资料视频+源码

    最近看到这么一张图,我觉得对于IT界的人来说应该很有感触. 也许这意味着今年是996的元年吧,但是那又怎么样?即便它虐我们千百遍,我们还是得微笑着面对它.So,今天分享一些整理的Android开发相关 ...

  6. Docker Compose搭建ELK

    Elasticsearch默认使用mmapfs目录来存储索引.操作系统默认的mmap计数太低可能导致内存不足,我们可以使用下面这条命令来增加内存: sysctl -w vm.max_map_count ...

  7. Java 【循环语句】

    一.java循环语句分支 二.for循环 在java中for循环和C的循环用法一样 public class demo{ public static void main(String[] args){ ...

  8. Interger对象不要用==进行比较

    为了更好的空间和时间性能,Integer会缓存频繁使用的数值,数值范围为-128到127,在此范围内直接返回缓存值. IntegerCache.low 是-128,IntegerCache.high是

  9. Chrome 插件 postman 可以在线post

    地址:https://chrome.google.com/webstore/detail/fhbjgbiflinjbdggehcddcbncdddomop

  10. 使用opencv自带Tracker进行目标跟踪——重新设定跟踪目标

    当希望重新设定一个目标进行跟踪的时候,以下两种做法都是无效的: 1.将新对象的Rect2d直接传递给update()函数: 2.再次使用tracker的init()函数. 解决办法:重新创建一个Tra ...