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 相关文章推荐
python 算法 排序实现快速排序
Jun 05 Python
详解在Python程序中使用Cookie的教程
Apr 30 Python
python django 实现验证码的功能实例代码
May 18 Python
Python使用itertools模块实现排列组合功能示例
Jul 02 Python
解决PyCharm的Python.exe已经停止工作的问题
Nov 29 Python
一篇文章弄懂Python中所有数组数据类型
Jun 23 Python
使用django的ORM框架按月统计近一年内的数据方法
Jul 18 Python
基于python实现蓝牙通信代码实例
Nov 19 Python
Python使用configparser库读取配置文件
Feb 22 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
Dec 22 Python
Python闭包的定义和使用方法
Apr 11 Python
Python爬虫网络请求之代理服务器和动态Cookies
Apr 12 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
PHP静态新闻列表自动生成代码
2007/06/14 PHP
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
2015/03/24 PHP
php通过文件头判断格式的方法
2016/05/28 PHP
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
javascript 隔行换色函数代码
2010/10/24 Javascript
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
2013/05/13 Javascript
JavaScript自动设置IFrame高度的小例子
2013/06/08 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
js改变style样式和css样式的简单实例
2016/06/28 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
jQuery实现QQ空间汉字转拼音功能示例
2017/07/10 jQuery
Angular2 组件间通过@Input @Output通讯示例
2017/08/24 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
Node.js学习之TCP/IP数据通讯(实例讲解)
2017/10/11 Javascript
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
2018/06/06 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
最小二乘法及其python实现详解
2020/02/24 Python
Python使用os.listdir和os.walk获取文件路径
2020/05/21 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
学生出入校管理制度
2014/01/16 职场文书
环保建议书
2014/03/12 职场文书
我的梦中国梦演讲稿
2014/04/23 职场文书
5s推行计划书
2014/05/06 职场文书
未受刑事制裁公证证明
2014/09/20 职场文书
pytorch中Schedule与warmup_steps的用法说明
2021/05/24 Python
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript