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字符串和字典
Jul 07 Python
利用Python开发微信支付的注意事项
Aug 19 Python
python pandas修改列属性的方法详解
Jun 09 Python
python 根据字典的键值进行排序的方法
Jul 24 Python
Python any()函数的使用方法
Oct 28 Python
Python 读取WAV音频文件 画频谱的实例
Mar 14 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
Apr 16 Python
零基础学python应该从哪里入手
Aug 11 Python
python中的垃圾回收(GC)机制
Sep 21 Python
python 判断一组数据是否符合正态分布
Sep 23 Python
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
Apr 25 Python
使用Python拟合函数曲线
Apr 14 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
全国FM电台频率大全 - 17 湖北省
2020/03/11 无线电
神族 Protoss 历史背景
2020/03/14 星际争霸
php防注入,表单提交值转义的实现详解
2013/06/10 PHP
php创建session的方法实例详解
2015/01/27 PHP
composer.lock文件的作用
2016/02/03 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
2016/09/30 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
Javascript 不能释放内存.
2006/09/07 Javascript
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
JQuery CSS样式控制 学习笔记
2009/07/23 Javascript
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
jquery validate 自定义验证方法介绍 日期验证
2014/02/27 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
2015/08/24 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
jQuery中值得注意的trigger方法浅析
2016/12/12 Javascript
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
JavaScript数组特性与实践应用深入详解
2018/12/30 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
layui内置模块layim发送图片添加加载动画的方法
2019/09/23 Javascript
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
跟老齐学Python之print详解
2014/09/28 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
python实现井字棋小游戏
2020/03/04 Python
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
What is EJB
2016/07/22 面试题
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
新文化运动的基本口号
2014/06/21 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
财政局个人年终总结
2015/03/03 职场文书
公司管理建议书
2015/09/14 职场文书
MySQL基础(二)
2021/04/05 MySQL
使用@Value值注入及配置文件组件扫描
2021/07/09 Java/Android