python运维__fifth_chapter(4)--shelve module 翻译

shelve — Python object persistence

‘shelf’是一个保存的,像字典的对象。它与‘dbm’数据库不同的是在shelf中的值(不是键)可以是随意的Python对象——pickle模块可以处理他们。它包括大部分的类实例,可迭代数据类型和有许多子对象的对象。键值通常为字符串。

shelve.open(filename, flag=’c’, protocol=None, writeback=False)

打开一个persistent dictionary。被指定的filename是位于数据库下的基础文件名。就像边际效应一样,扩展会被加到文件名中并且不止一个文件会被创建。通常,打开数据库下的文件是用来读写的。可选参数flag与dbm.open()中的参数flag是一样的。

默认,版本3中的pickle是用来序列化值的。pickle的版本协议可以用参数protocol来指定。

因为Python的语义,当一个易变的persistent-dictionary入口被修改时shelf是无法知道的。当分配到shelf时默认修改对象只能被写(见例子)。若可选参数writeback设置为True,所有访问入口都被存在高速内存中,通过函数sync()和close()进行回退操作;这会造成改变persistent dictionary的易变入口操作变困难,耗费巨大的内存容量,使关闭操作变得缓慢。

注意:不要依赖于shelf的自动关闭;但你不需要shelf或使用shelve.open()作为内容管理工具时你最好显式地调用close()函数。
with shelve.open('spam') as db:
db['eggs'] = 'eggs'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值