码迷,mamicode.com
首页 > 编程语言 > 详细

python shelve模块

时间:2018-07-19 23:28:36      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:提取   self   nbsp   name   ict   init   内容   ini   save   

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模块

标签:提取   self   nbsp   name   ict   init   内容   ini   save   

原文地址:https://www.cnblogs.com/xiao-apple36/p/9338581.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!