Python简要标准库(3)
shelve
若只需要一个简单的存储方案,那么shelve模块可以满足你大部分的需要,你所需要的只是为它提供文件名。shelve中唯一有趣的函数是open,在调用的时候他会返回一个Shelf对象
注意:
只需要把它当作普通字典(但是键一定要是字符串)来操作
在操作完之后,调用它的close方法
在python2.4之后的版本还有一个解决方案,将open函数的writeback参数设为True。这样所有从shelf读取或者赋值到shelf的数据结构都会保存在内存(缓存)中,而且只有在关闭shelf的时候才会回写到硬盘。
open函数参数说明
这个主要是解决这个问题:
import shelve
s = shelve.open('data.dat','c',None,False)
s['x'] = ['a','b','c']
s['x'].append('d')
print (s['x'])
会发现 s['x']还是'a','b','c' 这是因为在s['x'].append('d') 有一个创建副本的过程,即先会提取s['x'] 的内容建立一个副本,然后会在这个副本上追加'd',但此时的变更不会同步在s['x']中。
所以解决办法阔以这样
import shelve
s = shelve.open('data.dat','c',None,False)
s['x'] = ['a','b','c']
temp = s['x'] !
temp.append('d') !
s['x'] = temp !
print (s['x'])
这段的亮点主要在s['x'] = temp 等同于一个回写的操作,这样就把变更后的数据写入了s['x']
示例
最后有一段个人信息录入/查看程序
*增加了在添加信息时测试是否重复的过程
import sys,shelve
2 #储存信息
def store_person(db):
while (True):
pid = input('Enter unique ID number : ')
if pid in db.keys():
print ('find the same key : ')
else:
break person = {}
person ['name'] = input('Enter name : ')
person ['age'] = input('Enter age : ')
person ['phone'] = input('Enter phone number : ') db[pid] = person
print ('add to db done!')
#查找信息
def lookup_person(db):
pid = input('Enter ID number : ')
field = input('What would you like to know?(name,age,phone,all) : ')
field = field.strip().lower()
if field == 'all':
d = db[pid]
for key,value in d.items():
print (key,':',value)
else:
print (field.capitalize() + ':',db[pid][field])
#。。。
def print_help():
print ('help something') #获取用户输入
def enter_command():
cmd = input('Enter command(? for help) : ')
cmd = cmd.strip().lower()
return cmd def main():
database = shelve.open('date.dat')
try:
while True:
cmd = enter_command()
if cmd == 's':
store_person(database)
elif cmd == 'l':
lookup_person(database)
elif cmd == '?':
print_help()
elif cmd == 'q':
break;
finally:
database.close()
print ('stop by user') if __name__ == '__main__' : main()
Python简要标准库(3)的更多相关文章
- Python简要标准库(2)
集合 堆 和 双端队列 1.集合 创建集合 s = set(range(10)) 和字典一样,集合元素的顺序是随意的,因此不能以元素的顺序作为依据编程 集合支持的运算 a = set([1,2,3]) ...
- Python简要标准库(1)
sys sys这个模块让你能够访问与Python解释器联系紧密的变量和函数 其中的一些在下表 F argv 命令行参数,包括脚本名称 exit([arg]) 退出当前的程序,可选参数为给定的返回值或者 ...
- Python简要标准库(5)
hashlib Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 基本的生成MD密匙的函数 import hashlib md5 = hashlib.md5() md5.up ...
- 【python】标准库的大致认识
正如那句 Python 社区中很有名的话所说的:“battery included”,Python 的一大好处在于它有一套很有用的标准库(standard library).标准库是随着 Python ...
- python 使用标准库连接linux实现scp和执行命令
import stat import pexpect 只显示关键代码: sqldb = localpath+database //获取database名字 if os.path.exists(sqld ...
- Python的标准库介绍与常用的第三方库
Python的标准库介绍与常用的第三方库 Python的标准库: datetime:为日期和时间的处理提供了简单和复杂的方法. zlib:以下模块直接支持通用的数据打包和压缩格式:zlib,gzip, ...
- Python 3标准库 第十四章 应用构建模块
Python 3标准库 The Python3 Standard Library by Example -----------------------------------------第十四章 ...
- python linecache标准库基础学习
#python标准库基础之:linecacge:高效读取文本文件#说明与作用"""可以从文件或者导入python模块获取文件,维护一个结果缓存,从而可以更高效地从相同文件 ...
- python StringIO标准库基础学习
#标准库:StringIO提供类文件API文本缓冲区#作用:可以处理内存中的文本,有2种不同的实现:cStringIP版本用c编写提高速度,StringIO用python来提供可移植性,与其他字符串连 ...
随机推荐
- idea连接sqlite
首先下载驱动 官网链接:http://mvnrepository.com/artifact/org.xerial/sqlite-jdbc 打开idea 第一步:右边 数据源 (如果没有显示单击这里,有 ...
- 【luogu P3373 线段树2】 模板
题目链接:https://www.luogu.org/problemnew/show/P3373 lazy标记两个,先乘后加 #include <iostream> #include &l ...
- GPU卡掉卡
这几天用GPU卡跑东西,老是提示opencv的一个问题.但是我换个数据跑就没问题.说明代码是没问题的.发挥我作为女人的特质,从起试试吧.结果从起后找不到GPU卡了.nvidia-smi提示我没有安装最 ...
- 数据库——MySQL——单表查询
单表查询语法: SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 关键字的执行 ...
- 史上最简单的 SpringCloud 教程 | 第十四篇: 服务注册(consul)
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2017/07/12/sc14-consul/ 本文出自方志朋的博客 这篇文章主要介绍 s ...
- JDBC jar包
密码qiij https://pan.baidu.com/share/init?surl=oBfMwQ6rd9t6VNjIluF1qw
- chsh 设置用户禁止登陆
chsh username -s /sbin/nologin ##禁止登陆 chsh username -s /bin/bash ##允许登陆
- Java程序如何生成Jar 执行文件(1)
一.用Eclipse生产Jar文件 注意:此方法只能打包简单程序,不包含含有第三方jar包的项目 首先,看一下我的项目的目录结构: 1,项目名字上面点右键,选择Export,在选择java\JAR f ...
- JS数组&对象遍历
遍历的总结,经常用到的,希望帮助你我成长. JS数组遍历: 1,普通for循环 var arr = [1,2,3,4,9]; for ( var i = 0; i <arr.length; i+ ...
- android发布帖子类技术
最近练习一些关于发布帖子的技术,说来也简单,就学了一点皮毛吧!好了,下面就上代码吧! 首先设计服务器的访问类,大家都知道现在东西都要联网的嘛! JSONParser的类: public class J ...