shelve模块是一个简单的数据存储方案,类似于key-value数据库,可以很方便地保存Python对象,其内部是通过pickle协议来实现数据序列化。shelve只有一个open()函数,这个函数用于打开指定的文件(一个持久的字典),然后返回一个shelf对象。shelf是一种持久的、类似字典的对象。
shelve模块的特点有:
shelve模块只有一个open()函数;shelve模块可以持久化任何pickle可支持的Python数据格式,但是它的key必须是字符串;shelve模块是pickle模块的一个封装,但它实现了可以多次dump和load;shelve模块支持不同的打开方式和序列化协议,还有一个writeback参数控制是否将缓存中的对象写回文件。下面是一些使用shelve模块:
# 保存数据(数据持久化)import shelvename = ['Alce', 'Bob', 'Janice']infos = {'name': 'Alice', 'age': 22,'hobby':'music'}days=(31,28,31,30,31)with shelve.open('shelve.txt') as f: f['name'] = name # 持久化列表 f['infos'] = infos # 持久化字典 f['days']=days #持久化元组# 读取数据import shelvewith shelve.open('shelve.txt')as f: for k,v in f.items(): print(k,':',v)# 更新数据import shelvewith shelve.open('shelve.txt', flag= 'w', writeback= True) as f: f['name'].append('Tom') # 添加元素 del f['days'] # 删除元素 f['infos']['age'] = 23 # 修改元素