序列化与反序列化
-
序列化用途:
- 将内存中的字典、列表、集合以及各种对象保存到文件中
- 将自己定义的类实例,保存到文件中
-
反序列化用途:
- 从文件中读取数据,并让它们在内容中变成自己对应的类的实例
-
序列化:根据设定的协议,将内存对象转换成特定的字节流
- 持久化:将字节流存在文件中
反序列化:根据设定的协议,将一个特定的字节流恢复到内存中
注:序列化、反序列化必须保证使用同一套的定义,否则会造成错误
pickle模块
- Python中的序列化、反序列化模块
-
pickle.dumps(obj)
: 将obj序列化成一个字节流 -
pickle.dump(obj, fileobj)
: 将obj对象序列化后存储在file中 -
pickle.loads(bytes)
: 将一个字节流反序列化 -
pickle.load(fileobj)
: 从文本中获取字节流后反序列化 - pickle模块只可以在Python程序之间完成序列化与反序列化,为了完成跨平台、跨语言操作,有XML/json/protocol buffer/messagePack
json模块
- 值:双引号引起来的字符串,数值,bool值,null,对象,数组
- 字符串:有双引号包围起来的任意字符的组合,可以有转义字符
- 数值:正负数、整数、浮点数
- 对象:无序的键值对的集合,其中
- key必须是一个字符串,双引号包围的字符串
- value可以是任意合法的数值
- 数组:有组值的集合
- json支持的操作与pickle一致
MessagePack模块
- 安装:
pip install magpack-python
- 使用:
import msgpack
- 模块方法与pickle一致