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 09 Python
Python实现excel转sqlite的方法
Jul 17 Python
浅谈用Python实现一个大数据搜索引擎
Nov 28 Python
Django中的文件的上传的几种方式
Jul 23 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
python自定义线程池控制线程数量的示例
Feb 22 Python
python实现植物大战僵尸游戏实例代码
Jun 10 Python
使用python实现简单五子棋游戏
Jun 18 Python
对python中assert、isinstance的用法详解
Nov 27 Python
numpy实现神经网络反向传播算法的步骤
Dec 24 Python
Keras使用ImageNet上预训练的模型方式
May 23 Python
Python实现简单的俄罗斯方块游戏
Sep 25 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
表单提交验证类
2006/07/14 Javascript
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
javascript中定义私有方法说明(private method)
2014/01/27 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
让JavaScript和其它资源并发下载的方法
2014/10/16 Javascript
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
JS设计模式之命令模式概念与用法分析
2018/02/06 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
iview实现select tree树形下拉框的示例代码
2018/12/21 Javascript
vue element 生成无线级左侧菜单的实现代码
2019/08/21 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
21行Python代码实现拼写检查器
2016/01/25 Python
mac下pycharm设置python版本的图文教程
2018/06/13 Python
Python实现手写一个类似django的web框架示例
2018/07/20 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
2019/08/13 Python
基于python操作ES实例详解
2019/11/16 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
澳大利亚排名第一的在线酒类商店:MyBottleShop
2018/04/26 全球购物
女士和男士时尚鞋在线购物:Shoespie
2019/02/28 全球购物
意大利辅助药品、药物和补品在线销售:FarmaEurope
2020/04/29 全球购物
如果有两个类A,B,怎么样才能使A在发生一个事件的时候通知B
2016/03/12 面试题
《分一分》教学反思
2014/04/13 职场文书
代办委托书怎么写
2014/08/01 职场文书
行政专员岗位职责说明书
2014/09/01 职场文书
个人股份合作协议书
2014/10/24 职场文书
2015年留守儿童工作总结
2015/05/22 职场文书
地震捐款简报
2015/07/21 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫