python3 shelve模块的详解


Posted in Python onJuly 08, 2017

python3 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 相关文章推荐
利用一个简单的例子窥探CPython内核的运行机制
Mar 30 Python
举例讲解Python中字典的合并值相加与异或对比
Jun 04 Python
对django中render()与render_to_response()的区别详解
Oct 16 Python
python在html中插入简单的代码并加上时间戳的方法
Oct 16 Python
对Django中内置的User模型实例详解
Aug 16 Python
Python程序暂停的正常处理方法
Nov 07 Python
django实现将后台model对象转换成json对象并传递给前端jquery
Mar 16 Python
Python任务调度模块APScheduler使用
Apr 15 Python
Python学习之os模块及用法
Jun 03 Python
python如何查看安装了的模块
Jun 23 Python
哪种Python框架适合你?简单介绍几种主流Python框架
Aug 04 Python
自己搭建resnet18网络并加载torchvision自带权重的操作
May 13 Python
Python基于scapy实现修改IP发送请求的方法示例
Jul 08 #Python
Python开发微信公众平台的方法详解【基于weixin-knife】
Jul 08 #Python
python 中random模块的常用方法总结
Jul 08 #Python
Python调用微信公众平台接口操作示例
Jul 08 #Python
HTML中使用python屏蔽一些基本功能的方法
Jul 07 #Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
Jul 07 #Python
浅谈Python中的可变对象和不可变对象
Jul 07 #Python
You might like
DISCUZ 分页代码
2007/01/02 PHP
PHPStrom 新建FTP项目以及在线操作教程
2016/10/16 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
PHP APP微信提现接口代码
2018/09/30 PHP
PHP递归的三种常用方式
2019/02/28 PHP
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
使用jQuery和PHP实现类似360功能开关效果
2014/02/12 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
jQuery Validate设置onkeyup验证的实例代码
2016/12/09 Javascript
Vue.js系列之项目搭建(1)
2017/01/03 Javascript
ng2学习笔记之bootstrap中的component使用教程
2017/03/09 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
vue-router实现tab标签页(单页面)详解
2017/10/17 Javascript
基于Axios 常用的请求方法别名(详解)
2018/03/13 Javascript
webpack结合express实现自动刷新的方法
2019/05/07 Javascript
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
使用Python下的XSLT API进行web开发的简单教程
2015/04/15 Python
python开发之函数定义实例分析
2015/11/12 Python
python脚本生成caffe train_list.txt的方法
2018/04/27 Python
pyqt远程批量执行Linux命令程序的方法
2019/02/14 Python
django基础学习之send_mail功能
2019/08/07 Python
PyQt5实现登录页面
2020/05/30 Python
python实现二分类和多分类的ROC曲线教程
2020/06/15 Python
is_file和file_exists效率比较
2021/03/14 PHP
大门门卫岗位职责
2013/11/30 职场文书
运动会广播稿60字
2014/01/15 职场文书
初一地理教学反思
2014/01/16 职场文书
《美丽的公鸡》教学反思
2014/02/25 职场文书
难忘的一课教学反思
2014/04/30 职场文书
实习推荐信
2014/05/10 职场文书
新手上路标语
2014/06/20 职场文书
2016年国庆节新闻稿范文
2015/11/25 职场文书
会议主持词通用版
2019/04/02 职场文书
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers