为什么要序列化
内存中字典、列表、集合以及各种对象,如何保存到一个文件中?
如果是自己定义的类的实例,如何保存到一个文件中?
如何从文件中读取数据,并让它们在内存中再次恢复成自己对应的类的实例?
要设计一套协议,按照某种规则,把内存中数据保存到文件中。文件是一个字节序列,所以必须把数据转化为字节序列,输出到文件。这就是序列化。
反之,从文件的字节序列恢复到内存并且还是原来的类型,这就是反序列化。
定义
- serialization 序列化
- 将内存中对象存储下来,把它变成一个个字节。→ 二进制
- deserialization 反序列化
- 将文件的一个个字节恢复成内存中对象. ← 二进制
序列化保存到文件就是持久化。可以将数据序列化后持久化,或者网络运输;也可以将从文件中或者网络接收到的字节序列反序列化。
Python提供了pickle库。
pickle库
Python中的序列化和反序列化模块。
函数 | 说明 |
dumps | 对象序列化为bytes |
dump | 对象序列化到文件对象,就是存入文件 |
loads | 从bytes对象反序列化 |
load | 对象反序列化,从文件读取数据 |