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 30 Python
Python中return语句用法实例分析
Aug 04 Python
详解Python字符串对象的实现
Dec 24 Python
python 删除指定时间间隔之前的文件实例
Apr 24 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
Jul 11 Python
python 循环读取txt文档 并转换成csv的方法
Oct 26 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
Jan 13 Python
pycharm新建Vue项目的方法步骤(图文)
Mar 04 Python
Python虚拟环境的创建和使用详解
Sep 07 Python
Python生成pdf目录书签的实例方法
Oct 29 Python
在PyCharm中安装PaddlePaddle的方法
Feb 05 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
Feb 20 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的命名空间(一)
2018/02/21 PHP
php 中htmlentities导致中文无法查询问题
2018/09/10 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
javascript 面向对象编程基础:封装
2009/08/21 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
5款JavaScript代码压缩工具推荐
2014/07/07 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
jQuery获取复选框选中的当前行的某个字段的值
2017/09/15 jQuery
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
微信小程序如何利用getCurrentPages进行页面传值
2019/07/01 Javascript
基于python脚本实现软件的注册功能(机器码+注册码机制)
2016/10/09 Python
Python如何实现守护进程的方法示例
2017/02/08 Python
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
django删除表重建的实现方法
2019/08/28 Python
linux 下selenium chrome使用详解
2020/04/02 Python
python用什么编辑器进行项目开发
2020/06/17 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
整理HTML5中支持的URL编码与字符编码
2016/02/23 HTML / CSS
英国天然有机美容护肤品:Neal’s Yard Remedies
2018/05/05 全球购物
质检员岗位职责
2013/12/17 职场文书
学习雷锋做美德少年寄语大全
2014/04/09 职场文书
小学生暑假家长评语
2014/04/17 职场文书
图书馆志愿者活动总结
2014/06/27 职场文书
云台山导游词
2015/02/03 职场文书
简单介绍 http请求响应参数、无连接无状态、MIME、状态码、端口、telnet、curl
2021/03/31 HTML / CSS
nginx限制并发连接请求数的方法
2021/04/01 Servers
使用CSS实现音波加载效果
2023/05/07 HTML / CSS