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还简单.......

转载于:https://www.cnblogs.com/BALCKLIGHTNING/p/9965853.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值