Python笔记 之 shelve模块简介

语法

1,shelve.open(filename, flag=’c’, protocol=None, writeback=False)
创建或打开一个shelve对象,默认打开方式支持读写操作。
参数filename是文件路径。
可选参数flag,默认为‘c’,如果文件不存在则创建,支持读写; ‘r’: 只读;’w’: 支持读写; ‘n’: 每次调用open()都重新创建一个文件,支持读写。
可选参数protocol:是序列化模式,默认值为None。protocol的值可以是1或2,表示以二进制的形式序列化。
可选参数writeback:默认为False。当设置为True以后,shelve将所有从文件中读取的对象缓存到内存。当close()关闭文件的时候,缓存中所有的对象会被重新写入数据文件。writeback方式有优点也有缺点:优点是减少了出错的机率,让对象的持久化对用户更加的透明;
但这种方式在数据多的时候会增加额外的内存消耗,并且在close()的时候会将缓存中的每一个对象都写入到DB带来额外的等待时间。
2.shelve.close()
同步并关闭shelve对象。

示例
import shelve

bob = dict(name='Bob Smith', age=22, job='Dev', pay=40000)
filename = './datas/people.she'

def reviewFile(filename=filename):
    db = shelve.open(filename)
    for (k,v) in db.items():
        print(k,'=>\t',v)

def storeFile(key,value,filename=filename):
    db = shelve.open(filename)
    db[key] = value
    db.close()

def updateFile(key,value,filename=filename):
    db = shelve.open(filename=filename,flag='c',writeback=False)
    try:
        data = db[key]
    except:
        storeFile(key,value,filename)
    else:
        data = value
        db[key] = data
    finally:
        db.close()

if __name__ == '__main__':
    storeFile('bob',bob,filename)
    amy = {'name':'Amy Lee','age':19,'job':'Dev','pay':55000}
    updateFile('amy',amy,filename)
    reviewFile(filename)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值