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生成验证码实例
Aug 21 Python
跟老齐学Python之总结参数的传递
Oct 10 Python
python批量生成本地ip地址的方法
Mar 23 Python
CentOS6.5设置Django开发环境
Oct 13 Python
Django中的Signal代码详解
Feb 05 Python
python解析含有重复key的json方法
Jan 22 Python
如何使用Python 打印各种三角形
Jun 28 Python
python计算n的阶乘的方法代码
Oct 25 Python
django admin后管定制-显示字段的实例
Mar 11 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
Apr 15 Python
Python 实现PS滤镜的旋涡特效
Dec 03 Python
pytorch 梯度NAN异常值的解决方案
Jun 05 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获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
php微信公众平台示例代码分析(二)
2016/12/06 PHP
php学习笔记之mb_strstr的基本使用
2018/02/03 PHP
PHP反射基础知识回顾
2020/09/10 PHP
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
2012/12/04 Javascript
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
三种检测iPhone/iPad设备方向的方法
2014/04/23 Javascript
jquery实现简单文字提示效果
2015/12/02 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
BootStrap创建响应式导航条实例代码
2016/05/31 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
微信小程序 导入图标实现过程详解
2019/10/11 Javascript
Vue3 源码导读(推荐)
2019/10/14 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
公众号SVG动画交互实战代码
2020/05/31 Javascript
Python中使用strip()方法删除字符串中空格的教程
2015/05/20 Python
Python中的ctime()方法使用教程
2015/05/22 Python
利用Python实现网络测试的脚本分享
2017/05/26 Python
python方向键控制上下左右代码
2018/01/20 Python
python+selenium实现QQ邮箱自动发送功能
2019/01/23 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
详细分析Python可变对象和不可变对象
2020/07/09 Python
python绘制趋势图的示例
2020/09/17 Python
Python join()函数原理及使用方法
2020/11/14 Python
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
运动会通讯稿150字
2014/02/15 职场文书
临床医学专业求职信
2014/08/08 职场文书
员工团队活动方案
2014/08/28 职场文书
初中美术教学反思
2016/02/17 职场文书
tp5使用layui实现多个图片上传(带附件选择)的方法实例
2021/11/17 PHP
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server