python shelve 使用实例
时间:2018-11-18
本文章向大家介绍Python3 shelve模块(持久化),需要的朋友可以参考一下
一、 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()
- 解决Vmware克隆出来虚拟机的网络问题
- Nginx|Tengine的编译安装步骤
- centos下tomcat安装调试
- Redis 实现接口访问频率限制
- Nginx 配置文件安全分析
- 一个写SQL语句的便利工具
- OpenFlow网络中的路由服务
- Python中萌新不知道的小魔法(一)
- 基于Scrapy的全球最大成人网站PornHub爬虫
- Python标准库笔记(7) — copy模块
- Python项目实战——开发网易云音乐插件
- 将已有项目代码通过命令行方式上传到github,简易傻瓜教程(图文)将已有项目代码通过命令行方式上传到github,傻瓜教程(图文)1. 创建一个github项目2. 在Repository name
- mac执行git命令出现xcrun: error: invalid active developer path解决方法
- centos修改主机名
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java的位运算符详解实例。
- 用一个测试类简化排序算法时间复杂度的研究
- R语言之可视化(33)绘制差异基因分析统计图
- Java transient不被持久化的原因
- 举一个有趣的例子,让你轻松搞懂JVM内存管理
- gulp的使用
- SpringBoot中 使用[info]日志级别打印mybatis sql语句
- Spring Boot 使用策略模式指定Service实现类
- 55. Vue webpack的基本使用
- ajax无刷新页面切换,历史记录后退前进解决方案
- 一起来学演化计算-SBX模拟二进制交叉算子和DE差分进化算子
- 通过与C++程序对比,彻底搞清楚JAVA的对象拷贝
- Spring - application.yml 数字读取错误、eg: 000001
- Swagger2 UI 提示"请确保swagger资源接口正确"解决办法
- Manytasking Jmetal 代码反向解析 2_MMDTLZ