shelve模块
shelve类似于一个key-value数据库,可以很方便的用来保存Python的内存对象,其内部使用pickle来序列化数据,简单来说,使用者可以将一个列表、字典、或者用户自定义的类实例保存到shelve中,下次需要用的时候直接取出来,就是一个Python内存对象。
使用举例1
import shelvezhang = dict(zip(['name', 'age'], ['zhang', 14]))li = dict(zip(['name', 'age'], ['li', 15]))# 存储对象到文件db = shelve.open('shelveDict.db') # 打开一个文件db['zhang'] = zhang # 向文件中添加内容,添加方式与给字典添加键值对相同db['li'] = lidb.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'] = 24db['zhang'] = zhang_obj # 重新存储至字典文件对象中print(db['zhang']) # 结果如下{'age': 24, 'name': 'zi'}db.close()
使用举例2
import shelveclass 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'))