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装饰器使用方法实例
Nov 21 Python
python利用socketserver实现并发套接字功能
Jan 26 Python
如何利用Boost.Python实现Python C/C++混合编程详解
Nov 08 Python
Python输出\u编码将其转换成中文的实例
Dec 15 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
Pytorch 多维数组运算过程的索引处理方式
Dec 27 Python
Pytorch实现各种2d卷积示例
Dec 30 Python
Python直接赋值及深浅拷贝原理详解
Sep 05 Python
基于python判断字符串括号是否闭合{}[]()
Sep 21 Python
python使用requests库爬取拉勾网招聘信息的实现
Nov 20 Python
python实现的web监控系统
Apr 27 Python
Python数据可视化之用Matplotlib绘制常用图形
Jun 03 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
flash用php连接数据库的代码
2011/04/21 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
PHP函数microtime()用法与说明
2013/12/04 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
移动节点的jquery代码
2014/01/13 Javascript
JavaScript中的原型和继承详解(图文)
2014/07/18 Javascript
javascript小数精度丢失的完美解决方法
2016/05/31 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
2016/06/25 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
老生常谈javascript的面向对象思想
2017/08/22 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
jQuery实现checkbox的简单操作
2017/11/18 jQuery
基于Vue2的独立构建与运行时构建的差别(详解)
2017/12/06 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
Vue项目总结之webpack常规打包优化方案
2019/06/06 Javascript
浅谈layui 数据表格前后台传值的问题
2019/09/12 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
Python正则表达式匹配HTML页面编码
2015/04/08 Python
python实现在windows服务中新建进程的方法
2015/06/30 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
Django 实现购物车功能的示例代码
2018/10/08 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
幼儿园门卫岗位职责
2014/02/14 职场文书
2014年人事科工作总结
2014/11/19 职场文书
商业计划书范文
2019/04/24 职场文书
创业方案:赚钱的烧烤店该怎样做?
2019/07/05 职场文书
读《钢铁是怎样炼成的》有感:百炼方成钢
2019/11/05 职场文书