python3 shelve模块的详解


Posted in Python onJuly 08, 2017

python3 shelve模块的详解

一、简介

在python3中我们使用json或者pickle持久化数据,能dump多次,但只能load一次,因为先前的数据已经被后面dump的数据覆盖掉了。如果我们想要实现dump和load多次,可以使用shelve模块。shelve模块可以持久化所有pickle所支持的数据类型。

二、持久化数据

1、数据持久化

import shelve
import datetime
 
info = {'name': 'bigberg', 'age': 22}
name = ['Apoll', 'Zous', 'Luna']
t = datetime.datetime.now()
 
with shelve.open('shelve.txt') as f:
  f['name'] = name  # 持久化列表
  f['info'] = info     # 持久化字典
  f['time'] = t      # 持久化时间类型

执行代码后会生成3个文件:shelve.txt.bak、shelve.txt.dat、shelve.txt.dir。

shelve.txt.bak 的内容

'info', (512, 45)
'name', (0, 42)
'time', (1024, 44)

shelve.txt.dat

�]q (X  ApollqX  ZousqX  Lunaqe.                                                                                                                                                                                                                                           �}q (X  ageqKX  nameqX  bigbergqu.                                                                                                                                                                                                                                          �cdatetime
datetime
q C
�"
2�q�qRq.

shelve.txt.dir 的内容

'info', (512, 45)
'name', (0, 42)
'time', (1024, 44)

2、数据读取

我们使用get来获取数据

import shelve
 
with shelve.open('shelve.txt') as f:
  n = f.get('name')
  i = f.get('info')
  now = f.get('time')
 
print(n)
print(i)
print(now)
 
#输出
 
['Apoll', 'Zous', 'Luna']
{'age': 22, 'name': 'bigberg'}
2017-07-08 11:07:34.865022

1、shelve模块是一个简单的key,value将内存数据通过文件持久化的模块。

2、shelve模块可以持久化任何pickle可支持的python数据格式。

3、shelve就是pickle模块的一个封装。

4、shelve模块是可以多次dump和load。

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
Python实现的下载网页源码功能示例
Jun 13 Python
python实现朴素贝叶斯分类器
Mar 28 Python
python re模块的高级用法详解
Jun 06 Python
解决python3运行selenium下HTMLTestRunner报错的问题
Dec 27 Python
Python中使用logging和traceback模块记录日志和跟踪异常
Apr 09 Python
python利用多种方式来统计词频(单词个数)
May 27 Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
Jun 21 Python
在python中用print()输出多个格式化参数的方法
Jul 16 Python
PyTorch和Keras计算模型参数的例子
Jan 02 Python
python编程进阶之类和对象用法实例分析
Feb 21 Python
python小技巧——将变量保存在本地及读取
Nov 13 Python
Django基础CBV装饰器和中间件
Mar 22 Python
Python基于scapy实现修改IP发送请求的方法示例
Jul 08 #Python
Python开发微信公众平台的方法详解【基于weixin-knife】
Jul 08 #Python
python 中random模块的常用方法总结
Jul 08 #Python
Python调用微信公众平台接口操作示例
Jul 08 #Python
HTML中使用python屏蔽一些基本功能的方法
Jul 07 #Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
Jul 07 #Python
浅谈Python中的可变对象和不可变对象
Jul 07 #Python
You might like
DC动漫人物排行
2020/03/03 欧美动漫
PHP4和PHP5性能测试和对比 测试代码与环境
2007/08/17 PHP
阿里云PHP SMS短信服务验证码发送方法
2017/07/11 PHP
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
javascript 动态生成私有变量访问器
2009/12/06 Javascript
javascript之学会吝啬 精简代码
2010/04/25 Javascript
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
vue中使用iview自定义验证关键词输入框问题及解决方法
2018/03/26 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
python删除特定文件的方法
2015/07/30 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
pytorch点乘与叉乘示例讲解
2019/12/27 Python
pycharm安装及如何导入numpy
2020/04/03 Python
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
俄罗斯鲜花递送:AMF
2020/04/24 全球购物
致百米运动员广播稿
2014/01/29 职场文书
喷漆工的岗位职责
2014/03/17 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
党员活动日总结
2014/05/05 职场文书
感恩的演讲稿
2014/05/06 职场文书
面试必备的求职信
2014/05/25 职场文书
推普周活动总结
2014/08/28 职场文书
2015年医德考评自我评价
2015/03/03 职场文书
求职自荐信怎么写
2015/03/04 职场文书
理解python中装饰器的作用
2021/07/21 Python
mysql的Buffer Pool存储及原理
2022/04/02 MySQL