zoukankan      html  css  js  c++  java
  • 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'))
    

      

      

     

  • 相关阅读:
    Linux网络编程一站式学习
    quick-cocos2d-x教程8:程序框架内lib文件夹分析
    petshop4.0 具体解释之中的一个(系统架构设计)
    LNK快捷方式漏洞利用方式 exp制作教程
    Serializable 作用
    0 1背包模板
    跟着辛星认识一下PHP的自己主动载入
    海茶3 らぶデス3 入门经典教程
    win下vm10+mac os 10.9安装遇到问题
    enum 在c中的使用
  • 原文地址:https://www.cnblogs.com/xiao-apple36/p/9338581.html
Copyright © 2011-2022 走看看