python shelve模块

Posted 一只小小寄居蟹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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‘))

  

  

 

以上是关于python shelve模块的主要内容,如果未能解决你的问题,请参考以下文章

Python模块-shelve模块

python模块(shelve,xml,configparser,hashlib,logging)

python模块(shelve,xml,configparser,hashlib,logging)

python shelve模块

python shelve模块

python shelve模块