shelve持久化操作模块
1、shelve提供了Python的持久化操作。持久化操作?--->就是把数据写到硬盘上,在操作shelve的时候非常像操作字典一样,也有点像redis.
import shelve shelf = shelve.open("yttlj") # shelf["zwj"] = "张无忌" print(shelf['zwj']) shelf.close() 结果: 张无忌
会生成三个文件:

2、存储复杂的数据
import shelve s = shelve.open('yttlj') s['zwj']={'name':'张无忌','age':25,'hobby':'武术'} print(s['zwj']) s.close() 结果: {'name': '张无忌', 'age': 25, 'hobby': '武术'}
但是有缺陷,无法该变字典中的数据
import shelve s = shelve.open('yttlj') s['zwj']['name'] = "周芷若" #尝试改变字典中的数据 print(s['zwj']) #并没有改变 s.close() 结果: {'name': '张无忌', 'age': 25, 'hobby': '武术'}
解决方案:(writeback=True)
import shelve s = shelve.open('yttlj',writeback=True) s['zwj']['name'] = "周芷若" #尝试改变字典中的数据 print(s['zwj']) s.close() 结果: {'name': '周芷若', 'age': 25, 'hobby': '武术'}
3、writeback=True可以动态的把我们修改的信息写到文件中,它还可以删除数据,就像字典一样
import shelve s = shelve.open('yttlj',writeback=True) del s['zwj'] print(s['zwj']) #没有数据了 会报错 s.close()
4、像字典一样遍历
import shelve s = shelve.open('yttlj',writeback=True) s['zwj'] = "张无忌" s['zhr'] = "周芷若" s.close() s = shelve.open('yttlj') for k in s: #像字典一样遍历 print(k) #结果: zwj zhr print(s.keys()) #拿到key的所有集合 #结果: KeysView(<shelve.DbfilenameShelf object at 0x000002A4A64F8320>) for k in s.keys(): print(k) #结果: zwj zhr for k,v in s.items(): print(k,v) s.close() 结果: zwj 张无忌 zhr 周芷若
浙公网安备 33010602011771号