#!/usr/bin/python
#Filename: cpickle.py import cPickle as p
import os shoplistfile="shoplist.data"
storedlist={} def menu():
running=True
try:
while running:
try:
f=file(shoplistfile)
storedlist=p.load(f)
command=raw_input("Please input command: ")
if command=="help":
help()
elif command=="add":
add(storedlist)
elif command=="delete":
delete(storedlist)
elif command=="update":
update(storedlist)
elif command=="select":
select(storedlist)
elif command=="quit":
running=False
elif command=='show':
show(storedlist)
else:
print "ERROR, please input help!"
finally:
f.close()
else:
print "Done"
except EOFError:
print "QUIT"
except KeyboardInterrupt:
print "Q"
finally:
print "DONE" def show(storedlist):
print '-'*40
for (k,v) in storedlist.items():
print '%s \t'%k,v
print '-'*40 def add(storedlist):
try:
username=raw_input("Please input add username:")
# print storedlist
# print username
if(storedlist.has_key(username)):
print "Username Exist!!"
return 0
emailbox=raw_input("Please input add email:")
storedlist[username]=emailbox
except:
print "err add"
finally:
write(storedlist) def select(storedlist):
try:
username=raw_input("Please input select username:")
if storedlist.has_key(username):
print storedlist[username]
else:
print 'Username not find!!'
return 0
except:
print "err select"
finally:
write(storedlist) def delete(storedlist):
try:
username=raw_input("Please input delete username:")
if storedlist.has_key(username):
print storedlist[username]
else:
print 'Username not find!!'
return 0
storedlist.pop(username)
except:
print "err delete"
finally:
write(storedlist) def update(storedlist):
try:
#not key ?
username=raw_input("Please input update username:")
if storedlist.has_key(username):
print storedlist[username]
else:
print 'Username not find!!'
return 0
emailbox=raw_input("Please input update email:")
storedlist[username]=emailbox
except:
print "err update"
finally:
write(storedlist) def write(stored):
f=file(shoplistfile,'w')
p.dump(stored,f)
f.close() def index():
if os.path.exists(shoplistfile):
menu()
else:
print 'Contacts not find!'
print 'Create Contacts...'
create_con() def create_con():
shoplist={}
try:
f=file(shoplistfile,'w')
p.dump(shoplist,f)
except IOError:
print 'find not file!!'
finally:
f.close()
menu() def help():
"""
------------------------
==>>help
==>>add < username email >
==>>delete < username >
==>>update < username newemail >
==>>select < username >
==>>quit
------------------------"""
print help.__doc__ if __name__=='__main__':
index()

练习字典,看简明的python后面有一个练习,根据cPickle 写一个通讯录,恶心下自己!

还没有写完准备弡上cpickle 还有字典的更多相关文章

  1. 前端性能测试工具 : dynaTrace Ajax (还没写完)

    今天开始写这个工具, #什么是dynaTrace Ajax? 随着 jQuery.Dojo.YUI 等框架的兴起让构建 Web2.0 应用更加容易,但随之带来的定位等应用问题也越来越难,尤其是与性能相 ...

  2. XObject.java 对象还没写完,希望电脑不会丢失。坏笑,早点见。

    /*面向对象强调的是对象, 面向过程强调的是功能行为,打开行为,关闭行为,执行行为,把多个行为封装成对象执行更强大的功能就是面向对象,是把多个函数, 多 个行为封装在一起,单一的函数执行对象的功能太困 ...

  3. 【creo】CREO5.0+VS2019配置(还没写完)

    欢迎大家一起学习使用c++对CREO5.0二次开发. 第1步,建立开发目录:在E盘(或者其他盘)新建creo_cpp文件夹,文件夹中新建ABC_TOOLS用来存放我们开发的工具,CODE文件夹存放开发 ...

  4. HDU 4640 状态压缩DP 未写完

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4640 解题思路: 首先用一个简单的2^n*n的dp可以求出一个人访问一个给定状态的最小花费,因为这i个 ...

  5. webuploader 跨域上传demo(还没有写记录一下)

    webuploader 跨域上传demo(还没有写记录一下)

  6. 写完代码就去吃饺子|The 10th Henan Polytechnic University Programming Contest

    河南理工大学第十届校赛 很久没有组队打比赛了,好吧应该说很久没有写题了, 三个人一起玩果然比一个人玩有趣多了... 前100分钟过了4题,中途挂机100分钟也不知道什么原因,可能是因为到饭点太饿了?, ...

  7. 缓存服务,还未创建完缓存时, 需要更改图层名称、服务名称、数据源位置、mxd名称等

    缓存服务,还未创建完缓存时, 需要更改图层名称.服务名称.数据源位置.mxd名称等.已经创建好的缓存还可以再用吗? 测试后可以, 注意:新服务相对旧服务,符号样式没有改变,切片方案没有变化. 测试步骤 ...

  8. 用putty玩linux的时候由于以前用window 习惯写完东西按一下ctrl+s 保存

    问题描述:用putty玩linux的时候由于以前用window 习惯写完东西按一下ctrl+s 保存,但是在putty一按下就不能再输入了.后来查找到:ctrl+s 是putty的一个命令大概是这样子 ...

  9. 不写完不让回家的JQuery的事件与动画

    在这看不见太阳的小黑屋里,苦逼的一天又开始了 好了闲话我也就不扯了,接下来我就来说说我对jQuery事件和动画的理解吧!!! 还是得再扯两句,我们敬爱的,Y老师讲完了,jQuery事件和动画,对着我们 ...

随机推荐

  1. apicloud监听返回键(安卓试过)

    下面监听写在apiready里面 api.addEventListener({ //使用下方函数此处好像失效了 name: 'keyback' }, function(ret, err) { aler ...

  2. mySQL遇到的问题

    学习mySQL遇到以下错误. 仔细检查才发现,是字段不一样. 所以插入数据,应该一一对应.

  3. java正则验证

    String regex ="[A-Z]{4}[0-9]{7}"; List<String> non= new ArrayList<String>(); f ...

  4. Jmeter学习(三十二)调试工具Debug Sampler(转载)

    转载自 http://www.cnblogs.com/yangxia-test 一.Debug Sampler介绍: 使用Jmeter开发脚本时,难免需要调试,这时可以使用Jmeter的Debug S ...

  5. myeclipse2014安装aptana3.4.0插件(转)

    1.下载aptana3.4.0_eclipse的zip包  http://pan.baidu.com/s/1qXOiZl6 或者是:https://pan.baidu.com/s/1jIqOYcI 2 ...

  6. openstack(Pike 版)集群部署(八)--- 连接Ceph Cluster 作为后端存储

    一.openstack Glance + ceph Cluster 部署: 博客:http://www.cnblogs.com/weijie0717/p/8563294.html 参考 续 部分.  ...

  7. nagios维护之添加监控

    查看修改的配置是否有误: /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 一.nagios监控交换机 编辑 /usr/ ...

  8. hadoop深入简出(二)

    1.上传文件 Hadoop fs -put hello.txt / 2.查看上传的文件 hadoop fs -ls / hadoop fs -text /hello.txt 两个命令都可以 3.创建文 ...

  9. rear

    rear - 必应词典 美[rɪr]英[rɪə(r)] v.抚养:养育:饲养:培养 n.屁股:后部:臀部 adj.后面的:后部的 网络背面:后方:后轮 变形过去分词:reared:现在分词:reari ...

  10. Maximum GCD(fgets读入)

    Maximum GCD https://vjudge.net/contest/288520#problem/V Given the N integers, you have to find the m ...