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 list转矩阵的实例讲解
Aug 04 Python
python实现简易数码时钟
Feb 19 Python
python的schedule定时任务模块二次封装方法
Feb 19 Python
Django文件存储 默认存储系统解析
Aug 02 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
Aug 13 Python
Python 利用高德地图api实现经纬度与地址的批量转换
Aug 14 Python
对python中list的五种查找方法说明
Jul 13 Python
利用Python实现斐波那契数列的方法实例
Jul 26 Python
Python logging日志库空间不足问题解决
Sep 14 Python
Python 下载Bing壁纸的示例
Sep 29 Python
python3中编码获取网页的实例方法
Nov 16 Python
Python必备技巧之字符数据操作详解
Mar 23 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
php单件模式结合命令链模式使用说明
2008/09/07 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
div层的移动及性能优化
2010/11/16 Javascript
jquery $.ajax()取xml数据的小问题解决方法
2010/11/20 Javascript
两个listbox实现选项的添加删除和搜索
2013/03/01 Javascript
js随机颜色代码的多种实现方式
2013/04/23 Javascript
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
原生JS绑定滑轮滚动事件兼容常见浏览器
2014/06/30 Javascript
js css 实现遮罩层覆盖其他页面元素附图
2014/09/22 Javascript
jquery专业的导航菜单特效代码分享
2015/08/29 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
AngularJS 指令的交互详解及实例代码
2016/09/14 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
JavaScript ES2019中的8个新特性详解
2019/02/20 Javascript
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
kafka-python批量发送数据的实例
2018/12/27 Python
【python】matplotlib动态显示详解
2019/04/11 Python
wxPython实现整点报时
2019/11/18 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
parser.add_argument中的action使用
2020/04/20 Python
如何使用python切换hosts文件
2020/04/29 Python
解决python的空格和tab混淆而报错的问题
2021/02/26 Python
行政助理的岗位职责
2014/02/18 职场文书
2014春晚主持词
2014/03/25 职场文书
安全技术说明书
2014/05/09 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
2015年食品安全工作总结
2015/05/15 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
赞美教师的句子
2019/09/02 职场文书
分享3个非常实用的 Python 模块
2022/03/03 Python