shelve模块是一个简单的k,v,将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式
简单来说,将数据通过文件持久化保存后,可以进行多次的load操作
import shelve
d = shelve.open('shelve_test') #打开一个文件
class Test(object):
def __init__(self,n):
self.n = n
t = Test(123)
def stu_data(name,age):
print("register stu",name,age)
name = ['s1','s2','s3']
l1 = {"name":'test',"age":18}
d["test123"] = name #持久化列表
d["func"] = stu_data #函数内存地址
d["t1"] = t #持久化类
d["l1"] = l1 #持久化字典
d.close()
执行完上述操作后,会自动生成3个文件:sheleve_test.bak、sheleve_test.dir、sheleve_test.dat,其中.dat文件是加密的
我们可以在任何地方读出这些数据:
import shelve
f = shelve.open('shelve_test')
print(f["test123"])
print(f['l1'])
print(f["func"])
print(f["func"]('test',33))
print(f["func"]('sdfklasdlfas',34))
执行结果:
['s1', 's2', 's3']
{'name': 'test', 'age': 18}
<function stu_data at 0x000001DD8C592F28>
register stu test 33
None
register stu sdfklasdlfas 34
None