python shelve模块

发布时间:2018-03-02 14:28:27编辑:admin阅读(3193)

    shelve模块是一个简单的k-value数据,将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式。


    shelve类似于一个存储持久化对象的持久化字典,即字典文件。

    使用方法也类似于字典。


    保存对象至shelve文件中:

    #!/usr/bin/env python
    # coding: utf-8
    __author__ = 'www.py3study.com'
    
    import shelve,datetime
    
    # 打开一个文件
    d = shelve.open('shelve_test')
    #基本信息
    info = {
        'age':22,
        "job":"it"
    }
    #姓名
    name = ["jack", "rain", "test"]
    #持久化列表,字典,创建时间
    d["name"] = name
    d["info"] = info
    d["create_time"] = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    d.close()

    执行程序,发现当前目录多了3个文件

    shelve_test.bak、shelve_test.dat、shelve_test.dir


    从文件中读取对象:

    #!/usr/bin/env python
    # coding: utf-8
    __author__ = 'www.py3study.com'
    
    import shelve
    
    # 打开一个文件
    d = shelve.open('shelve_test')
    #读取所有数据
    for i in d.items():
        print(i)
    
    print("-----------------------------")
    #读取基本信息,姓名,时间
    print(d.get("info"))
    print(d.get("name"))
    print(d.get("create_time"))
    d.close()

    执行输出

    ('name', ['jack', 'rain', 'test'])

    ('info', {'age': 22, 'job': 'it'})

    ('date', '2018-03-02 14:11:16')

    ('create_time', '2018-03-02 14:21:37')

    -----------------------------

    {'age': 22, 'job': 'it'}

    ['jack', 'rain', 'test']

    2018-03-02 14:21:37


    更新文件中的数据:

    import shelve
    
    # 打开一个文件
    d = shelve.open('shelve_test')
    #从文件中读取之前存储的对象
    info_new = d.get("info")
    #直接对对象进行修改
    info_new['age'] = 20
    #重新存储至字典文件对象中
    d['info'] = info_new
    #打印结果
    print(d['info'])
    d.close()

    执行输出

    {'age': 20, 'job': 'it'}

关键字

上一篇: python shutil模块

下一篇: python xml模块