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 相关文章推荐
Django集成百度富文本编辑器uEditor攻略
Jul 04 Python
python调用新浪微博API项目实践
Jul 28 Python
使用python实现省市三级菜单效果
Jan 20 Python
python中的迭代和可迭代对象代码示例
Dec 27 Python
pandas DataFrame数据转为list的方法
Apr 11 Python
Django Web开发中django-debug-toolbar的配置以及使用
May 06 Python
python中的for循环
Sep 28 Python
Python编程中flask的简介与简单使用
Dec 28 Python
python 获取等间隔的数组实例
Jul 04 Python
python子线程退出及线程退出控制的代码
Oct 16 Python
基于Python实现人脸自动戴口罩系统
Feb 06 Python
Python3合并两个有序数组代码实例
Aug 11 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
用Zend Encode编写开发PHP程序
2010/02/21 PHP
自定义php类(查找/修改)xml文档
2013/03/26 PHP
file_get_contents("php://input", "r")实例介绍
2013/07/01 PHP
PHP中关键字interface和implements详解
2017/06/14 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
2017/08/01 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
2019/04/11 PHP
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
没有document.getElementByName方法
2013/08/19 Javascript
不同Jquery版本引发的问题解决
2013/10/14 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
JS+html5制作简单音乐播放器
2020/09/13 Javascript
HTML中使背景图片自适应浏览器大小实例详解
2017/04/06 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
vue项目中使用vue-layer弹框插件的方法
2020/03/11 Javascript
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
python验证码识别的示例代码
2017/09/21 Python
python决策树之CART分类回归树详解
2017/12/20 Python
Python smtplib实现发送邮件功能
2018/05/22 Python
matplotlib 纵坐标轴显示数据值的实例
2018/05/25 Python
详解python常用命令行选项与环境变量
2020/02/20 Python
Python如何省略括号方法详解
2020/03/21 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
Python中Yield的基本用法
2020/10/18 Python
Kneipp克奈圃美国官网:德国百年精油配方的传承
2018/02/07 全球购物
高级文秘工作总结的自我评价
2013/09/28 职场文书
财务会计专业毕业生自荐信
2013/10/19 职场文书
法人授权委托书范本
2014/09/17 职场文书
小学假期安全广播稿
2014/09/28 职场文书
如何自己动手写SQL执行引擎
2021/06/02 MySQL
JavaScript实现登录窗体
2021/06/22 Javascript