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构建Hopfield网络的教程
Apr 14 Python
Python3通过Luhn算法快速验证信用卡卡号的方法
May 14 Python
Django rest framework实现分页的示例
May 24 Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 Python
将Python字符串生成PDF的实例代码详解
May 17 Python
python覆盖写入,追加写入的实例
Jun 26 Python
Python爬取知乎图片代码实现解析
Sep 17 Python
Python3标准库之threading进程中管理并发操作方法
Mar 30 Python
基于Python把网站域名解析成ip地址
May 25 Python
Opencv python 图片生成视频的方法示例
Nov 18 Python
Django展示可视化图表的多种方式
Apr 08 Python
Opencv中cv2.floodFill算法的使用
Jun 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
PHP脚本的10个技巧(4)
2006/10/09 PHP
PHP字符串 ==比较运算符的副作用
2009/10/21 PHP
php代码运行时间查看类代码分享
2011/08/06 PHP
phpize的深入理解
2013/06/03 PHP
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
php中strtotime函数用法详解
2014/11/15 PHP
ThinkPHP3.2.3数据库设置新特性
2015/03/05 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
PHP的mysqli_rollback()函数讲解
2019/01/23 PHP
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
子页向父页传值示例
2013/11/27 Javascript
js实现缓冲运动效果的方法
2015/04/10 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
JS时间控制实现动态效果的实例讲解
2017/07/31 Javascript
vue中的自定义分页插件组件的示例
2018/08/18 Javascript
electron-vue开发环境内存泄漏问题汇总
2019/10/10 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
2019/10/30 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
2020/09/18 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
python使用Flask操作mysql实现登录功能
2018/05/14 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
python 申请内存空间,用于创建多维数组的实例
2019/12/02 Python
Python图像处理二值化方法实例汇总
2020/07/24 Python
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
德国家具折扣店:POCO
2020/02/28 全球购物
半年思想汇报
2013/12/30 职场文书
安全事故检讨书
2014/01/18 职场文书
领导干部作风建设工作总结
2014/10/23 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
2016中秋节广告语
2016/01/28 职场文书
vue实现可拖拽的dialog弹框
2021/05/13 Vue.js
MySQL中日期型单行函数代码详解
2021/06/21 MySQL