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'))
    

      

      

     

  • 相关阅读:
    【转】ASP.NET配置文件详解
    asp.net 使用application实现单点登录(一个账号只能在一个地方登录)
    转:gridview获取当前行索引的方法
    awk中调用shell的自定义函数
    不想做操作工就把你的心静下来
    nagios通过脚本对系统进行定制监控
    关于一个sql执行时间而引发的讨论
    网站前端服务器高可用方案
    NFS在Centos 6.3下的安装
    关于perl中中文乱码的解决办法
  • 原文地址:https://www.cnblogs.com/xiao-apple36/p/9338581.html
Copyright © 2011-2022 走看看