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中使用item()方法遍历字典的例子
Aug 26 Python
Python 基础教程之str和repr的详解
Aug 20 Python
Python算法之求n个节点不同二叉树个数
Oct 27 Python
浅谈Python中range和xrange的区别
Dec 20 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 Python
解决python线程卡死的问题
Feb 18 Python
python 定时器,实现每天凌晨3点执行的方法
Feb 20 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
Sep 05 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
May 26 Python
Python实现弹球小游戏
Aug 01 Python
Python接口自动化之文件上传/下载接口详解
Apr 05 Python
Python+SeaTable实现计算两个日期间的工作日天数
Jul 07 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 计划任务 检测用户连接状态
2012/03/29 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
音乐播放用的的几个函数
2006/09/07 Javascript
jquery 弹出层实现代码
2009/10/30 Javascript
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
2011/01/17 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
Angular.js之作用域scope'@','=','&'实例详解
2017/02/28 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
JavaScript onclick事件使用方法详解
2020/05/15 Javascript
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
Python 正则表达式匹配字符串中的http链接方法
2018/12/25 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
python处理大日志文件
2019/07/23 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
pycharm实现猜数游戏
2020/12/07 Python
留学自荐信的技巧
2013/10/17 职场文书
CNC数控操作工岗位职责
2013/11/19 职场文书
员工考核管理制度
2014/02/02 职场文书
党员组织关系介绍信
2014/02/13 职场文书
送餐员岗位职责范本
2014/02/21 职场文书
同学聚会主持词
2014/03/18 职场文书
教师一帮一活动总结
2014/07/08 职场文书
新郎新娘答谢词
2015/01/04 职场文书
鼋头渚导游词
2015/02/05 职场文书
导游词格式
2015/02/13 职场文书
环卫工人慰问信
2015/02/15 职场文书
新年寄语2016
2015/08/17 职场文书
医院岗前培训心得体会
2016/01/08 职场文书
党性修养心得体会2016
2016/01/21 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
浅谈MySQL之浅入深出页原理
2021/06/23 MySQL