#!/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. 定时删除文件夹"$1"下最后修改时间大于当前时间"$2"天的文件

    shell 脚本: #!/bin/bash now=`date "+%Y-%m-%d_%H:%M:%S"`      #获取当前时间 echo "当前时间: " ...

  2. ssh问题:ssh_exchange_identification: Connection closed by remote host

    ssh问题:ssh_exchange_identification: Connection closed by remote host... 刚刚一个朋友告诉我SSH连接不上服务器了,重启电脑也不管用 ...

  3. 2017面向对象程序设计(Java) 第4周学习指导及要求(2017.9.14-2017.9.18)

    学习目标 深入理解程序设计中算法与程序的关系: 深入理解java程序设计中类与对象的关系: 理解OO程序设计的第一个特征:封装: 需要掌握基本使用方法的预定义类有:Math类.String类.Arra ...

  4. js中基本事件的总结,onclick、onblur、onchange等

    js中的基本事件总结: 特定的场景下发生的一个动作:事件:事件=函数(),事件发生会触发函数执行. 属性 当以下情况发生时,出现此事件 FF N IE onabort 图像加载被中断 1 3 4 on ...

  5. metasploit framework(七):密码嗅探

    run 当嗅探到流量中的用户密码信息时打印出来,目前只支持FTP,http get , pop3 还可以对抓包文件,进行密码提取,设置需要提取的文件路径 run就能提取里面的用户密码信息 查看和停掉某 ...

  6. lucene笔记

    lucene全文检索 全文检索是计算机程序通过扫描文章中的每一个词, 对每一个词建立一个索引, 指明该词在文章中出现的次数和位置. 当用户查询时根据建立的索引查找,类似于通过字典的检索字表查字的过程

  7. Python3 reversed 函数

    Python3 reversed 函数  Python3 内置函数 描述 reversed 函数返回一个反转的迭代器. 语法 以下是 reversed 的语法: reversed(seq) 参数 se ...

  8. PCB规则设置

    规则设置

  9. VCSA 6.5, 初始化设置root密码失败can't set root password 或 安装时卡在80%

    是因为下载的非官方的包密码过期了,如果是Windows引导安装: 安装完虚拟机的时候就马上执行下面步骤,修改密码有效期即可. 重启vcsa,在引导界面(photon的图形界面)里按e编辑启动项 在co ...

  10. [Java学习]面向对象-多态

    多态 多态发生条件 发生在有继承关系的类型中. 向上转型(自动类型转换)与向下转型(强制类型转换) //向上转型 //编译阶段a1被编译器看作是Animal类型,所以a1引用绑定的是Animal类中的 ...