Python:shelve数据解析

#!/usr/bin/env python
# coding:UTF-8


"""
@version: python3.x
@author:曹新健
@contact: [email protected]
@software: PyCharm
@file: shelve数据解析.py
@time: 2018/11/8 19:01
"""

"""
一、简要介绍:
    Shelve是对象持久化保存方法,将对象保存到文件里面,默认的数据存储文件是二进制的。可以作为一个简单
    的数据存储方案。
二、用法:
    使用时,只需要使用open函数获取一个Shelve对象,然后对数据进行增删改查操作,最后调用close函数将数据
    写入文件。
    shelve.open(filename, flag=’c’, protocol=None, writeback=False):创建或打开一个shelve对象。
    shelve默认打开方式支持同时读写操作。
        1、filename是关联的文件路径。
        2、可选参数flag,默认为‘c’,如果数据文件不存在,就创建,允许读写;可以是: ‘r’: 只读;
           ’w’: 可读写; ‘n’: 每次调用open()都重新创建一个空的文件,可读写。
        3、protocol:是序列化模式,默认值为None。
        4、writeback:默认为False。当设置为True以后,shelf将会将所有从DB中读取的对象存放到一个内存缓
           存。当我们close()关闭的Shelve的时候,缓存中所有的对象会被重新写入DB。
           writeback方式有优点也有缺点。优点是减少了我们出错的概率,并且让对象的持久化对用户更加的透
           明了;但这种方式并不是所有的情况下都需要,首先,使用writeback以后,Shelve在open()的时候会
           增加额外的内存消耗,并且当DB在close()的时候会将缓存中的每一个对象都写入到DB,这也会带来额
           外的等待时间。因为shelve没有办法知道缓存中哪些对象修改了,哪些对象没有修改,因此所有的对象
           都会被写入。
"""
import shelve
with shelve.open('shelve.txt') as db:
    db['person1'] = {"name":"cxj","age":18,"hobby":["money","power","girl"]}
    db['person2'] = {"name": "caoxinjian", "age": 28, "hobby": ["money", "power", "girl"]}

with shelve.open('shelve.txt') as db:
    del db['person1']
    db['person3'] = {"name": "Tom", "age": 28, "hobby": ["money", "power", "girl"]}
    print(db['person2'])
    #打印{'name': 'caoxinjian', 'age': 28, 'hobby': ['money', 'power', 'girl']}
    print(type(db))
    #打印<class 'shelve.DbfilenameShelf'>
    print(dict(db))
    #打印{'person2': ..., 'person3': {'name': 'Tom', 'age': 28, 'hobby': ['money', 'power', 'girl']}}

猜你喜欢

转载自blog.csdn.net/caoxinjian423/article/details/83927145