标签:提取 self nbsp name ict init 内容 ini save
shelve类似于一个key-value数据库,可以很方便的用来保存Python的内存对象,其内部使用pickle来序列化数据,简单来说,使用者可以将一个列表、字典、或者用户自定义的类实例保存到shelve中,下次需要用的时候直接取出来,就是一个Python内存对象。
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()
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‘))
标签:提取 self nbsp name ict init 内容 ini save
原文地址:https://www.cnblogs.com/xiao-apple36/p/9338581.html