pickle序列化存储

2020-05-29  本文已影响0人  一位学有余力的同学

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}
上一篇下一篇

猜你喜欢

热点阅读