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还简单.......
posted @ 2018-11-15 20:19  风光暖阳  阅读(242)  评论(0编辑  收藏  举报