Python数据持久化shelve模块用法分析


Posted in Python onJune 29, 2018

本文实例讲述了Python数据持久化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 相关文章推荐
tornado框架blog模块分析与使用
Nov 21 Python
Zabbix实现微信报警功能
Oct 09 Python
django+js+ajax实现刷新页面的方法
May 22 Python
使用Python爬取最好大学网大学排名
Feb 24 Python
python使用Matplotlib绘制分段函数
Sep 25 Python
python实现在函数图像上添加文字和标注的方法
Jul 08 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
Nov 22 Python
matplotlib.pyplot画图并导出保存的实例
Dec 07 Python
Pytorch之parameters的使用
Dec 31 Python
python调用私有属性的方法总结
Jul 24 Python
详解python中的闭包
Sep 07 Python
Python打包为exe详细教程
May 18 Python
python 统计列表中不同元素的数量方法
Jun 29 #Python
python计算两个数的百分比方法
Jun 29 #Python
python统计字母、空格、数字等字符个数的实例
Jun 29 #Python
python中计算一个列表中连续相同的元素个数方法
Jun 29 #Python
Python使用ConfigParser模块操作配置文件的方法
Jun 29 #Python
python计算列表内各元素的个数实例
Jun 29 #Python
python判断设备是否联网的方法
Jun 29 #Python
You might like
在字符串中把网址改成超级链接
2006/10/09 PHP
利用PHP扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
2016/03/05 PHP
js 提交和设置表单的值
2008/12/19 Javascript
js获取某元素的class里面的css属性值代码
2014/01/16 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
Javascript中的delete操作符详细介绍
2014/06/06 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
jQuery实现的导航条切换可显示隐藏
2014/10/22 Javascript
jQuery使用addClass()方法给元素添加多个class样式
2015/03/26 Javascript
继续学习javascript闭包
2015/12/03 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
JS立即执行函数功能与用法分析
2019/01/15 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
微信小程序实现聊天室
2020/08/21 Javascript
一个基于flask的web应用诞生(1)
2017/04/11 Python
opencv python 图像去噪的实现方法
2018/08/31 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
python实现飞船大战
2020/04/24 Python
OpenCV+python实现实时目标检测功能
2020/06/24 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
python爬取股票最新数据并用excel绘制树状图的示例
2021/03/01 Python
HTML5 HTMLCollection和NodeList的区别详解
2020/04/29 HTML / CSS
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
SQL里面如何插入自动增长序列号字段
2012/03/29 面试题
大学生应聘自荐信
2013/10/11 职场文书
乡镇个人对照检查材料
2014/08/22 职场文书