Python_shelve模块
shelve:对象持久化的保存的模块,将对象保存到文件里 (默认的数据存储文件为二进制),可持久化任何pickle可支持的Python数据格式
shelve 中唯一的方法:
shelve.open(filename,flag = 'c', protocol = None , writebake = False)
| filename | 关联的文件路径 |
| flag | 'r' :以只读模式打开一个已经存在的数据存储文件 |
| 'w' :以读写模式打开一个已经存在的数据存储文件 | |
| 'c' :(默认)以读写模式打开一个数据存储文件,如果不存在则创建 | |
| 'n' :总是以读写模式打开并且创建一个新的空数据存储文件 | |
| protocol | 表示序列化数据所使用的协议,默认为 None(pickle v3) |
| writebake | 表示是否开启回写功能 |
1. 文件可以像字典一样存储key - value (注:key 必须为字符串,value 可以是任何数据类型)
import shelve
date = shelve.open('family.txt') # Python的自处理系统会自动生成三个文件
date['father'] = 'Presly' # 默认为创建并且写入“c”
date['mather'] = 'Vera'
date['baby'] = [123, ]
date.close()
m = shelve.open('family.txt', falg= 'r', writebake=True) # 当writebake设置为True时,文件里才能直接添加
print(m['baby']) m['baby'].append(345)
print(m['father'])
print('-------------')
for key, value in m.items(): # 以字典的格式
print(key, ':', value)
m.close()
[123]
Presly
-------------
father : Presly
mather : Vera
baby : [123,345]
2. shelve 的序列化
- 可以把类的数据序列化,然后再 反序列化出元素
- 与pickle不同的是,pickle只能按照dump顺序,load出元素,而shelve可以直接重复拿出不同或者相同存进文件的key值,
3. shelve 可以进行类似于库,增,删,改,查
import shelve def store_information(database):
info = {}
ID = input('Enter the ID number:')
info['name'] = input('Enter the name:') # 将name ,age , phone 存入字典info里
info['age'] = input('Enter the age:')
info['phone'] = input('Enter the phone:')
database[ID] = info # 用ID : info 存入 database文件 def lookup_information(database):
ID = input('Enter the ID:')
field = input('What would you like to know?(name,age,phone)')
field = field.strip().lower()
print(database[ID][field]) # 通过输入的ID与 field 直接打印结果 def print_help():
print('Please enter the help command:')
print('store :store informatinon to database')
print('lookup :look up information by numID')
print('quit :save information and quit')
print('? :print help command') def enter_command():
cmd = input('Enter command (? for help)')
cmd = cmd.strip().lower()
return cmd def main():
database = shelve.open('db.dat')
try:
while True:
cmd = enter_command()
if cmd == 'store':
store_information(database) # 当if函数结束,自动跳转到cmd = enter_command()行
elif cmd == 'lookup':
lookup_information(database)
elif cmd == '?':
print_help()
elif cmd == 'quit':
return # 跳出while循环
finally:
database.close() if __name__ == '__main__': main()
一个例子
例子来源于:https://blog.csdn.net/u010480899/article/details/52864518
Python_shelve模块的更多相关文章
- Python_shelve模块操作二进制文件
import shelve #导入shelve模块 fp=shelve.open('shelve_test.dat') #创建或打开二进制文件 zhangsan={'age':38,'sex':'Ma ...
- 铁乐学python_shelve模块详解
python序列化模块-shelve模块详解 shelve:vt. 将(书等)放置在架子上:搁置,将某事放到一旁不予考虑:将-搁在一边:装搁架于: 个人感觉有点像字典缓存?暂时搁置到一旁的意思? 研究 ...
- npm 私有模块的管理使用
你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- ES6模块import细节
写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...
- Python标准模块--ContextManager
1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...
- Python标准模块--Unicode
1 模块简介 Python 3中最大的变化之一就是删除了Unicode类型.在Python 2中,有str类型和unicode类型,例如, Python 2.7.6 (default, Oct 26 ...
- Python标准模块--Iterators和Generators
1 模块简介 当你开始使用Python编程时,你或许已经使用了iterators(迭代器)和generators(生成器),你当时可能并没有意识到.在本篇博文中,我们将会学习迭代器和生成器是什么.当然 ...
- 自己实现一个javascript事件模块
nodejs中的事件模块 nodejs中有一个events模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...
随机推荐
- 002_性能测试工具wrk安装与使用
介绍 今天给大家介绍一款开源的性能测试工具 wrk,简单易用,没有Load Runner那么复杂,他和 apache benchmark(ab)同属于性能测试工具,但是比 ab 功能更加强大,并且可以 ...
- $Django 表设计,登陆图片验证
pip3 install pillow #PIL登陆图片验证(未实现局部刷新)详细:https://www.cnblogs.com/qiangyuge/p/8025168.htmldef get_co ...
- Mac 上卸载 Java
如何在 Mac 上卸载 Java? 本文适用于: 平台: Macintosh OS X Java 版本: 7.0, 8.0 使用终端卸载 Oracle Java 注:要卸载 Java,必须具有管理员权 ...
- Linux内存使用调整
前段时间在做播放器的时候,遇到个问题,花了很长时间,做个记录,希望对有需要的人有所帮助: 播放器的播视频的时候,无论是手动切换视频还是到视频播放完成,自动切换视频,一定次数后均出现黑屏现象,偶尔有声音 ...
- UML建模图
UML 2.0规范 迅速成为建立软件系统可视化.规范.文档的标准.统一建模语言(UML) 也被用于非软件系统的建模,并在很多领域,诸如金融,军事,工程方面应用广泛. UML 2 定义了13种基本的图, ...
- [转载]RabbitMQ消息可靠性分析
有很多人问过我这么一类问题:RabbitMQ如何确保消息可靠?很多时候,笔者的回答都是:说来话长的事情何来长话短说.的确,要确保消息可靠不只是单单几句就能够叙述明白的,包括Kafka也是如此.可靠并不 ...
- 【Android开发经验】android:windowSoftInputMode属性具体解释
本文章来自CSDN博客:http://blog.csdn.net/zhaokaiqiang1992.转载请注明地址! 在前面的一篇文章中,简单的介绍了一下怎样实现软键盘不自己主动弹出,使用的方法是设置 ...
- sqlalchemy 的设置及使用
FLASK之数据库设置 数据库 知识点 Flask-SQLALchemy安装 连接数据库 使用数据库 数据库迁移 邮件扩展 4.1 数据库的设置 Web应用中普遍使用的是关系模型的数据库,关系型数据库 ...
- phpstudy添加redis扩展
操作系统 windows: 直接贴步骤记录下 一. 划重点,运行phpinfo(), 观察第四行 x86 好了记住这个 x86 三. http://pecl.php.net/pa ...
- 对一个元素 同时添加单击onclick 和 双击ondblclick 触发冲突的解决
需求说明:单击列表项内容后,吧啦吧啦,双击列表项内容后,巴拉巴拉巴拉~~~ 解决思路:卧槽 ,其实我是没思路的,当时唯一的想法就是,看个人点击鼠标的速度了,双击快一点,触发双击事件ლ(′◉❥◉`ლ), ...