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简单实现TCP包发送十六进制数据的方法
Apr 16 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
JSON Web Tokens的实现原理
Apr 02 Python
Python读取指定目录下指定后缀文件并保存为docx
Apr 23 Python
Python网络编程 Python套接字编程
Sep 13 Python
Python使用smtp和pop简单收发邮件完整实例
Jan 09 Python
Django 根据数据模型models创建数据表的实例
May 27 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
Dec 12 Python
用uWSGI和Nginx部署Flask项目的方法示例
May 05 Python
Django实现从数据库中获取到的数据转换为dict
Mar 27 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
Sep 16 Python
python处理写入数据代码讲解
Oct 22 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
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
PHP实现对站点内容外部链接的过滤方法
2014/09/10 PHP
PHP SplObjectStorage使用实例
2015/05/12 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
js css样式操作代码(批量操作)
2009/10/09 Javascript
jQuery的实现原理的模拟代码 -1 核心部分
2010/08/01 Javascript
基于Jquery的实现回车键Enter切换焦点
2010/09/14 Javascript
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
JavaScript中关联原型链属性特性
2016/02/13 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
2017/05/17 Javascript
微信小程序动态添加分享数据
2017/06/14 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
2019/07/15 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
[04:22]DOTA2大事件之护国神翼
2020/08/14 DOTA
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
Python内置的字符串处理函数整理
2013/01/29 Python
python 循环遍历字典元素的简单方法
2016/09/11 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
django 在原有表格添加或删除字段的实例
2018/05/27 Python
对python捕获ctrl+c手工中断程序的两种方法详解
2018/12/26 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
乡镇党员干部群众路线对照检查材料思想汇报
2014/09/28 职场文书
python Django框架快速入门教程(后台管理)
2021/07/21 Python
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL