美文网首页
永久字典shelve

永久字典shelve

作者: Black先森 | 来源:发表于2017-01-01 14:55 被阅读0次

对于字典肯定非常熟悉,这是Python的内置数据类型,特点是拥有键值对的数据,
通过键访问值的速度非常快,原因是字典主要存储在内存中,通过hash存储映射
关系。缺点就是程序结束以后,字典将不能访问了。为了解决字典的这个缺陷,因此
用了这个永久字典。本文主要讲解永久字典的使用。

永久字典是将字典写成文件,存储在硬盘。当然速度比字典稍慢,但使用永久字典的
方法却非常简单,这都仰仗开源的各路大神封装得非常方便。

import shelve

db = shelve.open("gg.dat", 'c')
for key, value in zip("abcde", range(5)):
    db[key] = value

for k, v in db.items():
    print k, v

db.close()

>>> b 1
    d 3
    a 0
    c 2
    e 4

打开永久字典文件以后,就跟操作字典完全一样了,字典的值当然可以是
数值,列表,元组等类型。值得注意的是永久字典的key必须为str类型 如果是unicode则会报错,值为unicode类型是可以的。这是底层封装
对字符集的处理问题,使用的时候按照规则来就行,如果要纠结这个问题,
那就看封装的源码吧。


import shelve

db = shelve.open("gg.dat", 'c')
db[u"name"] = u"Vincent"

db.close()

>>> Traceback (most recent call last):
  File "E:/workspace/demo/demo.py", line 10, in <module>
    db[u"name"] = u"Vincent"
  File "C:\Python27\lib\shelve.py", line 133, in __setitem__
    self.dict[key] = f.getvalue()
  File "C:\Python27\lib\bsddb\__init__.py", line 279, in __setitem__
    _DeadlockWrap(wrapF)  # self.db[key] = value
  File "C:\Python27\lib\bsddb\dbutils.py", line 68, in DeadlockWrap
    return function(*_args, **_kwargs)
  File "C:\Python27\lib\bsddb\__init__.py", line 278, in wrapF
    self.db[key] = value
TypeError: String or Integer object expected for key, unicode found

永久的字典的后缀名不一定是dat,可以没有后缀名,但最好是dat活着db
这样的便于识别的名称。

相关文章

  • 永久字典shelve

    对于字典肯定非常熟悉,这是Python的内置数据类型,特点是拥有键值对的数据,通过键访问值的速度非常快,原因是字典...

  • Python入门教程系列:shelve

    前面我们介绍了json和pickle,这里再介绍一个简单好用的shelve持久化模块。 shelve模块以类似字典...

  • python之dbm、pickle、shelve

    dbm、pickle和shelve都是python自带模块。 dbm可以打开数据库文件,把字典存储到数据库文件中,...

  • Python3.6:shelve模块

    shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而...

  • python 标准库之shelve

    shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而...

  • lesson 036 —— shelve 模块

    lesson 036 —— shelve 模块 关于 shelve 模块的简单介绍。 方法 file = shel...

  • 2019-05-10python学习记录-对文件进行操作

    用shelve模块保存变量 提取shelve保存的东西 用pprint.pformat()函数保存变量

  • Python-shelve库

    Python-shelve库 shelve是python中用来持久化存储的模块,类似于一个key-value的数据...

  • 模块的使用2

    json&pickle模块/shelve configparser hashlib suprocess

  • shelve模块比pickle更强大

    一、shelve模块 shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle...

网友评论

      本文标题:永久字典shelve

      本文链接:https://www.haomeiwen.com/subject/tclivttx.html