#!/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. Python中struct.pack()和struct.unpack()

    https://blog.csdn.net/tjuyanming/article/details/79700601 https://www.cnblogs.com/yezl/p/5861787.htm ...

  2. Kafka日志及Topic数据清理

    由于项目原因,最近经常碰到Kafka消息队列拥堵的情况.碰到这种情况为了不影响在线系统的正常使用,需要大家手动的清理Kafka Log.但是清理Kafka Log又不能单纯的去删除中间环节产生的日志, ...

  3. HTML5将<video>视频设置为页面动态背景

    <!DOCTYPE html><html><head> <title>Operation Aborted Example</title> & ...

  4. mongodb 副本集部署

    1.安装三节点linux环境:196.168.1.111,196.168.1.112,192.168.1.113(三节点可彼此ping通) 2.三节点安装mongodb,参考https://blog. ...

  5. unittest测试

    标签(空格分隔): unittest unittest介绍: python里面也有单元测试框架-unittest,相当于是一个python版的junit. 一.unittest简介 1.先导入unit ...

  6. web漏洞详解及修复建议

    1.漏洞描述 跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私.钓鱼欺骗.偷取密码.传播恶意代码等攻击行为. 恶意的攻击者将对客户端有危害的 ...

  7. ssh 与远程机器保持心跳(linux)

    文件/etc/ssh/ssh_config末尾加上: TCPKeepAlive yes ServerAliveInterval

  8. Allowing GPU memory growth

    By default, TensorFlow maps nearly all of the GPU memory of all GPUs (subject to CUDA_VISIBLE_DEVICE ...

  9. Django的几种缓存的配置

    1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会 ...

  10. PHP如何处理yyyyMMddHHmmssSSSZ?

    PHP如何处理yyyyMMddHHmmssSSSZ? 更新: 2016-01-05 12:45 作者: wecandoitforev PHP编程中,时间,日期的应用是必不可少的.有一种日期格式:yyy ...