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中基于生成器的状态机
Apr 13 Python
python显示生日是星期几的方法
May 27 Python
python实现媒体播放器功能
Feb 11 Python
用python处理MS Word的实例讲解
May 08 Python
python得到电脑的开机时间方法
Oct 15 Python
一篇文章搞懂Python的类与对象名称空间
Dec 10 Python
对Python3 goto 语句的使用方法详解
Feb 16 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
Mar 13 Python
python使用requests.session模拟登录
Aug 09 Python
python随机模块random使用方法详解
Feb 14 Python
解决Django Haystack全文检索为空的问题
May 19 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
Aug 31 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将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
php版微信公众平台之微信网页登陆授权示例
2016/09/23 PHP
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
js弹出确认是否删除对话框
2014/03/27 Javascript
浅谈jQuery中replace()方法
2015/05/13 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
AngularJS API之copy深拷贝详解及实例
2016/09/14 Javascript
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
微信小程序中setInterval的使用方法
2017/09/29 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
vue登录以及权限验证相关的实现
2019/10/25 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
基于Python的接口测试框架实例
2016/11/04 Python
python Socket之客户端和服务端握手详解
2017/09/18 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
2019/07/28 Python
python列表推导式操作解析
2019/11/26 Python
Python加密模块的hashlib,hmac模块使用解析
2020/01/02 Python
Python3标准库之functools管理函数的工具详解
2020/02/27 Python
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
青年志愿者事迹材料
2014/02/07 职场文书
政法学院毕业生求职信
2014/02/28 职场文书
英语辞职信怎么写
2015/02/28 职场文书
2015年妇委会工作总结
2015/05/22 职场文书
离婚代理词范文
2015/05/23 职场文书
2019公司管理制度
2019/04/19 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS
html输入两个数实现加减乘除功能
2021/07/01 HTML / CSS
Python万能模板案例之matplotlib绘制直方图的基本配置
2022/04/13 Python