shelve

Posted balcklightning

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shelve相关的知识,希望对你有一定的参考价值。

shelve提供python的持久化操作什么叫持久化操作呢说白话,就是把数据写到硬盘上.
在操作shelve的时候非常的像操作一个字典这个东?到后期就像redis差不多.
字典怎么用shelve就怎么用
import shelve
shelf = shelve.open("sylar")  #打开一个文件"sylar"如果没有会自动生成
shelf["jay"] = "周杰伦"
print(shelf[‘jay‘])   #结果:周杰伦
shelf.close()
感觉到了么这个鬼东?和字典差不多只不过你的字典是一个文件接下来我们存储 一些复的数据
import shelve
s = shelve.open("sylar")
s["jay"] = {"name":"周杰伦", "age":18, "hobby":"哄?小孩"}
print(s[‘jay‘]) #{‘name‘: ‘周杰伦‘, ‘age‘: 18, ‘hobby‘: ‘哄?小孩‘}
s.close()
但是,有坑
import shelve
s = shelve.open("sylar")
s[‘jay‘][‘name‘] = "胡辣汤" #尝试改变字典中的数据
s.close()
s = shelve.open("sylar")
print(s[‘jay‘]) # 并没有改变
s.close()
解决方案
import shelve
s = shelve.open("sylar", writeback=True)
s[‘jay‘][‘name‘] = "胡辣汤" # 尝试改变字典中的数据
s.close()
s = shelve.open("sylar")
print(s[‘jay‘]) # 改变了.{‘name‘: ‘胡辣汤‘, ‘age‘: 18, ‘hobby‘: ‘哄?孩‘}
s.close()
writeback=True可以动态的把我们修改的信息写入到文件中而且这个?东?西还可以删除数据就像字典?样上?波操作
s = shelve.open("sylar", writeback=True)
del s[‘jay‘]
s.close()
 
 
s = shelve.open("sylar")
print(s[‘jay‘]) # 报错了,没有了
s.close()
 
 
s = shelve.open("sylar", writeback=True)
s[‘jay‘] = "周杰伦"
s[‘wlj‘] = "王?宏"
s.close()
#
#
s = shelve.open("sylar")
for k in s: # 像字典?样遍历
    print(k)
print(s.keys()) # 拿到所有key的集合
for k in s.keys():
    print(k)
for k, v in s.items(): # 像字典?一样操作
    print(k, v)
s.close()
综上shelve就当成字典来用就?了它比redis还简单.......

以上是关于shelve的主要内容,如果未能解决你的问题,请参考以下文章

python shelve模块

13.4 Shelve模块

shelve模块和xml模块

shelve模块

shelve模块

shelve模块