1.为什么要进行序列化存储
在程序运行过程中所有的变量都是存在内存中,一旦程序关闭或者电脑关机,内存中的所有数据都会丢失。为了能够继续使用,我们需要将数据存放在硬盘里。
我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。
序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。
反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。
2.如何进行序列化与反序列化
首先,我们尝试把一个对象序列化并写入文件:
import pickle
d = dict(name='Bob', age=20, score=88)
with open('data.pkl', 'wb') as ff:
pickle.dump(d, ff)
此时,会在相同目录下产生一个‘data.pkl’文件,这个文件是人类不可读的。
with open() as
是python中打开文件夹的一种操作,‘wb’是以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
关于python中open
的用法和读写文件的操作,请分别访问博客和教程了解。
序列化操作完成之后我们要进行反序列化:
with open('data.pkl', 'rb') as ff:
data1 = pickle.load(ff)
print(data1)
其中’rb’表示只读操作。
输出结果为:
{'name': 'Bob', 'age': 20, 'score': 88}
本文原载于我的简书博客