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基于twisted实现简单的web服务器
Sep 29 Python
Python基于回溯法子集树模板解决选排问题示例
Sep 07 Python
python利用OpenCV2实现人脸检测
Apr 16 Python
matplotlib作图添加表格实例代码
Jan 23 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
May 25 Python
解决python3中的requests解析中文页面出现乱码问题
Apr 19 Python
解析Python3中的Import
Oct 13 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
Jan 13 Python
Python修改列表值问题解决方案
Mar 06 Python
基于python实现监听Rabbitmq系统日志代码示例
Nov 28 Python
利用Python实现学生信息管理系统的完整实例
Dec 30 Python
python 实现有道翻译功能
Feb 26 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中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
PHP+jQuery实现自动补全功能源码
2013/05/15 PHP
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
基于vuejs实现一个todolist项目
2017/04/11 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
2017/11/24 Javascript
JS中精巧的自动柯里化实现方法
2017/12/12 Javascript
VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
2018/01/11 Javascript
每天学点Vue源码之vm.$mount挂载函数
2019/03/11 Javascript
基于nodejs的微信JS-SDK简单应用实现
2019/05/21 NodeJs
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
python通过smpt发送邮件的方法
2015/04/30 Python
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
Python设计模式之抽象工厂模式
2016/08/25 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
python实现海螺图片的方法示例
2019/05/12 Python
python怎么判断模块安装完成
2020/06/19 Python
python如何实现读取并显示图片(不需要图形界面)
2020/07/08 Python
利用Python的folium包绘制城市道路图的实现示例
2020/08/24 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
pandas按条件筛选数据的实现
2021/02/20 Python
如何使用canvas绘制可移动网格的示例代码
2020/12/14 HTML / CSS
Origins悦木之源英国官网:雅诗兰黛集团高端植物护肤品牌
2017/11/06 全球购物
纬创Java面试题笔试题
2014/10/02 面试题
银行会计业务的个人自我评价
2013/11/02 职场文书
应用数学自荐书范文
2013/11/24 职场文书
公司培训欢迎词
2014/01/10 职场文书
电脑销售顾问自荐信
2014/01/29 职场文书
化工专业自荐书
2014/06/16 职场文书
优秀党员学习焦裕禄精神思想汇报范文
2014/09/10 职场文书
法人授权委托书范本
2014/09/17 职场文书
2014年国庆节庆祝建国65周年比赛演讲稿
2014/09/21 职场文书