提下序列化的知识点,目的有两个:
1. 存储或者传输抽象的代码对象(这个对象可以是一个类,一个字典等等,这些事物无法脱离py文件单独存在,所以我们统一制定一个统一编码标准将其转为二进制字节,到用的时候再解码)
2. 持久化存储,我们知道有些文件存储是以某种编码形式存在的;换句话说,换台机器用不同的编码格式,该文件的二进制字节格式完全不同。所以我们需要有一个统一的编码和解码方法将文件或者对象存储起来,以便于交流。
从上面两点我们可以推测出,既然序列化是着重于存储的,所以估计是做了内存优化的。比如一个对象在系统中占用了10m空间,将其序列化后,占用的空间应该不到10m,当然这是推测~
json序列化
与二进制序列化不同,json是文本序列化,其可以在不同编程语言之间做交互,且序列化后可以直接阅读。这里不多做介绍。
pickle.dump和pickle.load
pickle.dump用于序列化,即将对象转为统一格式的二进制码:
# -*- coding: utf-8 -*-
import pickle
if __name__ == '__main__':
dic = {'a':'b', 'c':'d', 'e':'f'}
# 将dic对象序列化至f文件中
with open('pickle_example.pickle', 'wb') as f:
pickle.dump(dic, f)
f.close()
pickle.load用于发序列化,将二进制码解码为对象:
# -*- coding: utf-8 -*-
import pickle
if __name__ == '__main__':
# 将f文件序列化
with open('pickle_example.pickle', 'rb') as f:
dic = pickle.load(f)
print (type(dic))
print (dic)
输出为:
参考资料:
[2] (莫烦) pickle保存数据