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魔术方法详解
Feb 14 Python
python实现颜色空间转换程序(Tkinter)
Dec 31 Python
完美解决python遍历删除字典里值为空的元素报错问题
Sep 11 Python
Python实现求解括号匹配问题的方法
Apr 17 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
Oct 11 Python
解决python ogr shp字段写入中文乱码的问题
Dec 31 Python
python调用matlab的m自定义函数方法
Feb 18 Python
Django框架使用mysql视图操作示例
May 15 Python
python实现tail -f 功能
Jan 17 Python
关于Python3爬虫利器Appium的安装步骤
Jul 29 Python
python源码剖析之PyObject详解
May 18 Python
Python中22个万用公式的小结
Jul 21 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调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
php使HTML标签自动补全闭合函数代码
2012/10/04 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
浅述节点的创建及常见功能的实现
2016/12/15 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
xmlplus组件设计系列之图标(ICON)(1)
2017/05/05 Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
2017/08/16 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
2017/10/17 Javascript
微信小程序时间选择插件使用详解
2018/12/28 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
JavaScript浅层克隆与深度克隆示例详解
2020/09/01 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
2020/12/10 Vue.js
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
python dict 相同key 合并value的实例
2019/01/21 Python
Django中create和save方法的不同
2019/08/13 Python
QML使用Python的函数过程解析
2019/09/26 Python
Python上下文管理器用法及实例解析
2019/11/11 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
2020/03/30 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
Hammitt官网:设计师手袋
2020/05/23 全球购物
采购类个人求职的自我评价
2014/02/18 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
三年级评语大全
2014/04/23 职场文书
主持人开幕词
2015/01/29 职场文书
普宁寺导游词
2015/02/04 职场文书
综合测评自我评价
2015/03/06 职场文书
2015年语文教研组工作总结
2015/05/23 职场文书
2016大学生暑期三下乡心得体会
2016/01/23 职场文书
在JavaScript中如何使用宏详解
2021/05/06 Javascript
Apache Kafka 分区重分配的实现原理解析
2022/07/15 Servers