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 相关文章推荐
python版本的读写锁操作方法
Apr 25 Python
shelve  用来持久化任意的Python对象实例代码
Oct 12 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
Pandas 数据处理,数据清洗详解
Jul 10 Python
Flask-Mail用法实例分析
Jul 21 Python
Python实现判断一个整数是否为回文数算法示例
Mar 02 Python
Python API 自动化实战详解(纯代码)
Jun 11 Python
python代码打印100-999之间的回文数示例
Nov 24 Python
Python使用Excel将数据写入多个sheet
May 16 Python
python3实现名片管理系统(控制台版)
Nov 29 Python
详解python的xlwings库读写excel操作总结
Feb 26 Python
Python离线安装openpyxl模块的步骤
Mar 30 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
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
tp5.1 实现setInc字段自动加1
2019/10/18 PHP
JavaScript 的方法重载效果
2009/08/07 Javascript
js png图片(有含有透明)在IE6中为什么不透明了
2010/02/07 Javascript
jquery mobile changepage的三种传参方法介绍
2013/09/13 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
快速使用Bootstrap搭建传送带
2016/05/06 Javascript
AngularJS入门教程之表格实例详解
2016/07/27 Javascript
微信小程序加载更多 点击查看更多
2016/11/29 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
2018/08/16 Javascript
Three.js实现3D机房效果
2018/12/30 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
2019/05/14 Javascript
vue3.0 搭建项目总结(详细步骤)
2019/05/20 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
一步步解析Python斗牛游戏的概率
2016/02/12 Python
Python学习教程之常用的内置函数大全
2017/07/14 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
python 读取DICOM头文件的实例
2018/05/07 Python
Jupyter notebook如何实现指定浏览器打开
2020/05/13 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
舞蹈比赛获奖感言
2014/02/04 职场文书
四年级科学教学反思
2014/02/10 职场文书
白酒市场营销方案
2014/02/25 职场文书
大课间活动实施方案
2014/03/06 职场文书
幼儿园家长寄语
2014/04/02 职场文书
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
优秀团员主要事迹范文
2015/11/05 职场文书
为什么说餐饮很难做,是因为你不了解这些新规则
2019/08/20 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang
PHP实现两种排课方式
2021/06/26 PHP
SpringBoot2零基础到精通之数据库专项精讲
2022/03/22 Java/Android