python shelve模块
shelve模块
shelve类似于一个key-value数据库,可以很方便的用来保存Python的内存对象,其内部使用pickle来序列化数据,简单来说,使用者可以将一个列表、字典、或者用户自定义的类实例保存到shelve中,下次需要用的时候直接取出来,就是一个Python内存对象。
使用举例1
import shelve
zhang = dict(zip(['name', 'age'], ['zhang', 14]))
li = dict(zip(['name', 'age'], ['li', 15]))
# 存储对象到文件
db = shelve.open('shelveDict.db') # 打开一个文件
db['zhang'] = zhang # 向文件中添加内容,添加方式与给字典添加键值对相同
db['li'] = li
db.close() # 关闭文件
# 从文件中提取对象
db = shelve.open('shelveDict.db') # 打开一个文件
print(db['zhang']) # 向从字典中获取键的方式一样读取内容 {'name': 'zhang', 'age': 14}
print(db['li']) # 结果为{'age': 15, 'name': 'li'}
# 从文件中提取对象并修改
db = shelve.open('shelveDict.db') # 打开文件
zhang_obj = db['zhang'] # 从文件中读取之前存储的对象
zhang_obj['name'] = 'zi' # 直接对对象进行修改
zhang_obj['age'] = 24
db['zhang'] = zhang_obj # 重新存储至字典文件对象中
print(db['zhang']) # 结果如下{'age': 24, 'name': 'zi'}
db.close()
使用举例2
import shelve
class ShelveUtil(object):
"""
使用Shelve存储提取对象
"""
def __init__(self, file):
self.file_obj = shelve.open(file)
def save(self, key, value):
"""
存储对象
:param key:
:param value:
:return:
"""
self.file_obj[key] = value
def load(self, key):
"""
获得对象
:param key:
:return:
"""
return self.file_obj[key]
def __del__(self):
self.file_obj.close()
if __name__ == '__main__':
a = {'a': 1, 'b': 2}
s = ShelveUtil('a.db')
s.save('a', a)
print(s.load('a'))

浙公网安备 33010602011771号