一、 shelve
- shelve提供python的持久化操作。
- 持久化:把数据写到硬盘上
- shelve操作与字典非常类似
import shelve d = shelve.open("tom") d["name"] = "Tom" print(d["name"]) # Tom d.close()
如果在文件关闭后,再打印则无法读取,报错
import shelve d = shelve.open("tom") d["name"] = "Tom" d.close() print(d["name"]) # ValueError: invalid operation on closed shelf
遍历:
import shelve d = shelve.open("namelist", writeback=True) d["name"] = "Tom" d["age"] = 18 d.close() d = shelve.open("namelist") for k in d: # 遍历所有的key print(k) # name age for k in d.keys(): # 遍历所有key print(k) # name age for k, v in d.items(): # 遍历所有的键-值对 print(k, v) # name Tom age 18 d.close()
二、 writeback
- 把修改的内容自动的回写到文件中
1. 修改内容
shelve.open()默认writeback=False,所以,在默认情况下修改字典的数据,则未写入到文件:
import shelve d = shelve.open("namedict") d["one"] = {"name": "Tom", "age": 18, "hobby": "football"} d.close()
修改字典中的数据,再次读取时,数据未修改成功
import shelve d = shelve.open("namedict") d["one"]["name"] = "Linda" d.close() d = shelve.open("namedict") print(d["one"]) # {'name': 'Tom', 'age': 18, 'hobby': 'football'} d.close()
当writeback=True时,修改的数据保存在文件中,再次读取是则显示正确结果
import shelve d = shelve.open("namedict", writeback=True) d["one"]["name"] = "Linda" d.close() d = shelve.open("namedict") print(d["one"]) # {'name': 'Linda', 'age': 18, 'hobby': 'football'} d.close()
2. 删除内容
在writeback=True条件下,删除内容,文件中内容也会被删除
import shelve d = shelve.open("namedict", writeback=True) del d["one"] d.close() d = shelve.open("namedict") print(d["one"]) # KeyError: b'one' 报错 d.close()
继续阅读与本文标签相同的文章
上一篇 :
PHP运算符===和==实例讲解及区别分析
下一篇 :
美最新研究:未来机器人能思考?
-
PHP还有前途吗?
2026-05-19栏目: 教程
-
Python 制作微信全家福,你就是朋友圈最亮的仔!
2026-05-19栏目: 教程
-
3年java开发竟然还不知道Lambda的这个坑
2026-05-19栏目: 教程
-
小狗分类器,你家的狗子是个什么狗?
2026-05-19栏目: 教程
-
安卓开发开发规范手册V1.0
2026-05-19栏目: 教程
