序列化和反序列化
- 序列化:按照某种规则,把内存中数据保存到文件中。
- 文件时一个字节序列,所以必须把数据转换成字节序列,输出到文件。
- 反序列化:从文件的字节序列恢复到内存并且还原原来的类型。
定义
- serialization 序列化,将内存中对象存储下来,把他变成一个个字节。->二进制
- deserialization 反序列化,将文件的一个个字节恢复成内存中对象。->二进制
序列化保存到文件就是持久化,可以将数据序列化(持久化)后用于网络传输;也可以将从文件中或者网络接受到的字节序列反序列化。
- Python中pickle库就是用来序列化和反序列化的。
pickle库
函数 |
说明 |
dumps |
对象序列化为bytes对象 |
dump |
对象序列化到文件对象,就是存入文件 |
loads |
从bytes对象反序列化 |
load |
对象反序列化,从文件读取数据 |
- dump(obj,file,protocol=None,*,fix_imports=True) #将obj对象序列化后写入file中
- obj:需要序列化的对象
- file:文件描述符,需要写入的文件描述符
- protocol:协议
- fix_imports:
- dumps(obj, protocol=None, *, fix_imports=True)->bytes #将obj对象序列化后返回序列化的bytes对象
- obj:需要序列化的对象
- protocol:协议
- fix_imports:
- bytes:返回值 序列化后的bytes
- load(file, *, fix_imports=True, encoding=“ASCII”, errors=“strict”) #从文件中读取内容反序列化。
- file :文件描述符,序列化后生成的文件。
- fix_imports:
- encoding:文件编码,默认为ASCII
- errors
- loads(bytes_object, *, fix_imports=True, encoding=“ASCII”, errors=“strict”)->从bytes中反序列化
- bytes_object:序列化后的bytes对象
- fix_imports:
- encoding:编码
- errors
简单综合示例
import pickle
i = 99
c = 'c'
l = list('123')
d = {
"a":1,"b":"abc"