主要内容:
一. 序列化概述
二. pickle模块
三. shelve模块
四. json模块(重点!)
五. configpaser模块
一. 序列化概述
1. 序列化: 将字典,列表等内容转换成一个字符串的过程就叫做序列化.
2. 为什么要把其他数据类型转换成字符串?
(1)能够在网络上传输的只能是bytes
(2)能够存储在文件里的只有bytes和str
3. 序列化的目的:
(1)以某种存储形式使自定义对象持久化
(2)将对象从一个地方传递到另一个地方
(3)使程序更具维护性
4. 反序列化:
序列化: str --> 数据结构
反序列化: str <-- 数据结构
5. 在Python中序列化的三种方案:
(1)pickle模块: 可以将Python中的任意数据类型转换成bytes并写入到文件中,同样也可以把文件中写好的bytes转换回Python的数据,这个过程被称为反序列化.
(2)shelve模块: 它是一种简单另类的序列化方案,有一点类似于今后会学习的redis.它可以作为一种小型的数据库来使用.
(3)json模块: 将python中常用的字典,列表转化成字符串.它是目前前后端数据交互使用频率最高的一种数据格式.
二. pickle模块
pickle是把python对象写入到文件中的一种解决方案.写入到文件中的是bytes,它不是给人看的,只有机器可以识别.
pickle可以把python中任意的数据类型序列化.
1. pickle模块中的dumps()方法和loads()方法
注意: dumps()和loads()与文件操作无关
举例说明:
import pickle # 引入模块 class Cat: # 创建类 def __init__(self, name, age): self.name = name self.age = age def catch_mouse(self): print(self.name, "抓老鼠") cat = Cat("jerry", 18) # 创建一个对象 byte = pickle.dumps(cat) # dumps()方法 --> 序列化一个对象 print(byte) # 打印结果是一堆很长的二进制字符串 new_cat = pickle.loads(byte) # 把二进制字符串反序列化为原来的对象 new_cat.catch_mouse() # 执行结果: jerry 抓老鼠 --> 反序列化之后得到的对象还是原来那个类型的对象