Python2.7-shelve
shelve模块,持久化对象数据,可以说是 pickle 模块的封装,用于把像字典一样的以键-值存储的数据持久化存储,像操作数据库。当我们写程序的时候如果不想用关系数据库那么重量级的东东去存储数据,不妨可以用 shelve。shelf 也是用 key 来访问的,使用起来和字典类似。shelve 其实用 anydbm 去创建 DB 并且管理持久化对象的。
模块方法:
shelve.open(filename, flag='c', protocol=None, writeback=False):创建一个 Shelf 对象,打开一个 filename 文件,flag(r:只读;w:读写;c:读写如果文件不存在则创建;n:总是创建一个新的数据库读写),protocol 指定 pickle 格式,writeback 若为 False,则如果键-值里的值还是键-值形式,无法修改第二层的数据,第一层的键-值仍可修改,若为 True,则都可以修改,但会把所有信息都缓存起来,消耗大量内存,并导致关闭的时候较慢
模块的类:
1、Shelf(dict, protocol=None, writeback=False):从 dict 创建,其余同上
Shelf.sync():若 writeback 为真,则清空所有缓存并将修改保存至磁盘
Shelf.close():关闭文件,同时调用 sync
2、BsdDbShelf(dict, protocol=None, writeback=False):shelf 子类,增加了 first(), next(), previous(), last() 和 set_location() 操作,这些操作只在 bsddb 模块里有,别的数据库模块没有,所以传入的 dict 对象也要有对应的这些方法
3、DbfilenameShelf(filename, flag='c', protocol=None, writeback=False):shelf 子类,接收 filename 而不是类字典对象,其余相同
Python2.7-shelve的更多相关文章
- 20190218-学习python使用shelve遇到raise error, "db type could not be determined"
照书上敲代码,运行了提示raise error, "db type could not be determined",现场如下: ubuntu-vm:~/code/massageb ...
- Mac最新系统bssdb BUG
这个bug在Mac OS更新到10.14时候出现,当前系统版本 ➜ git:(master) sw_vers ProductName: Mac OS X ProductVersion: 10.14 B ...
- Python2.6-原理之类和oop(下)
来自<python学习手册第四版>第六部分 五.运算符重载(29章) 这部分深入介绍更多的细节并看一些常用的重载方法,虽然不会展示每种可用的运算符重载方法,但是这里给出的代码也足够覆盖py ...
- Python(文件、文件夹压缩处理模块,shelve持久化模块,xml处理模块、ConfigParser文档配置模块、hashlib加密模块,subprocess系统交互模块 log模块)
OS模块 提供对操作系统进行调用的接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目 ...
- os常用模块,json,pickle,shelve模块,正则表达式(实现运算符分离),logging模块,配置模块,路径叠加,哈希算法
一.os常用模块 显示当前工作目录 print(os.getcwd()) 返回上一层目录 os.chdir("..") 创建文件包 os.makedirs('python2/bin ...
- python笔记-7(shutil/json/pickle/shelve/xml/configparser/hashlib模块)
一.shutil模块--高级的文件.文件夹.压缩包处理模块 1.通过句柄复制内容 shutil.copyfileobj(f1,f2)对文件的复制(通过句柄fdst/fsrc复制文件内容) 源码: Le ...
- 【python】-- json & pickle、xml、requests、hashlib、shelve、shutil、configparser、subprocess
json & pickle Python中用于序列化的两个模块 json 用于[字符串]和 [python基本数据类型] 间进行转换 pickle 用于[python特有的类型] ...
- 让VIM支持Python2 by update-alternatives
前言 Ubuntu 16+中$ sudo apt install vim所安装的vim只支持Python3,但很多插件如YCM和powerline均需要Python2,那就来场"生命贵在折 ...
- 烂泥:python2.7和python3.5源码安装
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前几天在centos6.6安装ansible时,一直提示python版本不对,导致不能安 ...
- python模块(shelve,xml,configparser,hashlib,logging)
1.1shelve模块 shelve 模块比pickle模块简单,只有一个open函数,返回类似字典对象,可读可写:key必须为字符串, 而值可以是python所支持的数据类型. shelve模块主要 ...
随机推荐
- Vue:v-on自定义事件
Vue中父组件使用prop向子组件传递数据,那么子组件向父组件使用什么方式传递信息:自定义事件. 1.先来看官网上面教程 每个 Vue 实例都实现了事件接口,即: 使用 $on(eventName) ...
- Spring Data Redis —— 快速入门
环境要求:Redis 2.6及以上,javase 8.0及以上: 一.Spring Data Redis 介绍 Spring-data-redis是spring的一部分,提供了在srping应用中通过 ...
- Linux常用基本命令( mkdir )
mkdir: 作用:创建目录( make directories ) 命令格式: make [option] 目录 1,创建目录, 当目录存在时,再次创建会提示文件已经存在 ghostwu@dev:~ ...
- php命令行生成项目结构
ghostinit.php <?php class ghostinit{ static $v = 'ghost version is 1.1'; static function init(){ ...
- 设计模式原则(6)--Open-Closed Principle(OCP)--开闭原则
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.定义: 一个软件实体应当对扩展开放,对修改关闭.即软件实体应尽量在不修改原有代码的情况下进行扩展. 2.使用场 ...
- 借助预编译防止sql注入攻击
可重用的sql操作类 public ResultSet doQuery(String sql,Object[] params){ ResultSet rs = null; conn = this.ge ...
- autocad.net-图片打印合成
调用打印程序“PublishToWeb JPG.pc3”进行图片打印,该打印驱动程序中内置了很多的打印方案,在同尺寸的打印方案下,数据范围越大打印出来的清晰度就越差,内置的尺寸不一定都满足,在又要通过 ...
- InteliiJ IDEA的安装配置与简单使用
小Alan前段时间一直在家里搬砖,已经很久没有接触技术了,从今天开始重拾技术,工欲善其事,必先利其器,以前在做Java开发的时候最常用的IDE就是Eclipse莫属了,不过随着岁月的流逝,在2016年 ...
- TLS 1.0协议
TLS1.0 协议发布于1999年初.该协议可在Internet中提供给通信双方一条私有信道,即对通信消息进行加密.该协议主要描述了通信密钥协商的方法与通信格式的定义.分别由TLS Handshake ...
- C#多线程的用法9-Semaphore
Semaphore:可理解为允许线程执行信号的池子,池子中放入多少个信号就允许多少线程同时执行. private static void MultiThreadSynergicWithSemaphor ...