Python 持久性
数字,列表,字典,嵌套结构和类实例对象等对象存在于计算机的内存中,并在脚本结束后立即丢失。
pickle 将数据持久存储在单独的文件中。
在所有情况下,对象的腌制表示总是一个字节对象,因此必须打开 wb
中的文件来存储数据,并且 rb
要从 pickle 加载数据。
数据可能不属于任何类型,例如,
data={'a':'some_value',
'b':[9,4,7],
'c':['some_str','another_str','spam','ham'],
'd':{'key':'nested_dictionary'},
}
存储数据
import pickle
file=open('filename','wb') #file object in binary write mode
pickle.dump(data,file) #dump the data in the file object
file.close() #close the file to write into the file
加载数据
import pickle
file=open('filename','rb') #file object in binary read mode
data=pickle.load(file) #load the data back
file.close()
>>>data
{'b': [9, 4, 7], 'a': 'some_value', 'd': {'key': 'nested_dictionary'},
'c': ['some_str', 'another_str', 'spam', 'ham']}
可以腌制以下类型
- 无,真,假
- 整数,浮点数,复数
- 字符串,字节,字节数组
- 仅包含可选对象的元组,列表,集和词典
- 在模块的顶层定义的函数(使用 def,而不是 lambda)
- 在模块顶层定义的内置函数
- 在模块顶层定义的类
- 这些类的实例,其 dict 或调用 getstate () 的结果