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']}

可以腌制以下类型

  1. 无,真,假
  2. 整数,浮点数,复数
  3. 字符串,字节,字节数组
  4. 仅包含可选对象的元组,列表,集和词典
  5. 在模块的顶层定义的函数(使用 def,而不是 lambda)
  6. 在模块顶层定义的内置函数
  7. 在模块顶层定义的类
  8. 这些类的实例,其 dict 或调用 getstate () 的结果