Maorongrong smile like sunshine

pickle

2015-09-08

Python 提供了一个标准模块来做这件事,就是 pickle。它可以把任何 Python 对象存储在文件中,再把它原样取出来

【Python 第65课】pickle

其实 Python 提供了一个标准模块来做这件事,就是 pickle。它可以把任何 Python 对象存储在文件中,再把它原样取出来。

“序列化”:将数据转成文本的过程,即将对象状态转换为可保持或传输的格式的过程。 “反序列化”:从序列化的格式中解析对象状态的过程。

存储的过程:

import pickle

test_data = ['Save me!', 123.456, True]

f = file('test.data', 'w')
pickle.dump(test_data, f)
f.close()

## 这样把 test_data 这个 list 存储在了文件 test.data 中。

用文本编辑器打开 test.data 查看里面的内容:

(lp0
S'Save me!'
p1
aF123.456
aI01
a.

这就是经 pickle 序列化后的数据,隐约可以看到之前对象的影子。你可能无法看出这个文件的规律,这没关系,Python 能看懂就可以了。

下面取存储的过程:

import pickle

f = file('test.data')
test_data = pickle.load(f)
f.close()

print test_data

控制台的输出:

[‘Save me!’, 123.456, True]

如果你想保存多个对象,一种方法是把这些对象先全部放在一个序列中,在对这个序列进行存储:

a = 123
b = "hello"
c = 0.618
data = (a, b, c)
...
pickle.dump(data, f)

Comments