1. #!/usr/bin/python
  2. #Filename: cpickle.py
  3.  
  4. import cPickle as p
  5. import os
  6.  
  7. shoplistfile="shoplist.data"
  8. storedlist={}
  9.  
  10. def menu():
  11. running=True
  12. try:
  13. while running:
  14. try:
  15. f=file(shoplistfile)
  16. storedlist=p.load(f)
  17. command=raw_input("Please input command: ")
  18. if command=="help":
  19. help()
  20. elif command=="add":
  21. add(storedlist)
  22. elif command=="delete":
  23. delete(storedlist)
  24. elif command=="update":
  25. update(storedlist)
  26. elif command=="select":
  27. select(storedlist)
  28. elif command=="quit":
  29. running=False
  30. elif command=='show':
  31. show(storedlist)
  32. else:
  33. print "ERROR, please input help!"
  34. finally:
  35. f.close()
  36. else:
  37. print "Done"
  38. except EOFError:
  39. print "QUIT"
  40. except KeyboardInterrupt:
  41. print "Q"
  42. finally:
  43. print "DONE"
  44.  
  45. def show(storedlist):
  46. print '-'*40
  47. for (k,v) in storedlist.items():
  48. print '%s \t'%k,v
  49. print '-'*40
  50.  
  51. def add(storedlist):
  52. try:
  53. username=raw_input("Please input add username:")
  54. # print storedlist
  55. # print username
  56. if(storedlist.has_key(username)):
  57. print "Username Exist!!"
  58. return 0
  59. emailbox=raw_input("Please input add email:")
  60. storedlist[username]=emailbox
  61. except:
  62. print "err add"
  63. finally:
  64. write(storedlist)
  65.  
  66. def select(storedlist):
  67. try:
  68. username=raw_input("Please input select username:")
  69. if storedlist.has_key(username):
  70. print storedlist[username]
  71. else:
  72. print 'Username not find!!'
  73. return 0
  74. except:
  75. print "err select"
  76. finally:
  77. write(storedlist)
  78.  
  79. def delete(storedlist):
  80. try:
  81. username=raw_input("Please input delete username:")
  82. if storedlist.has_key(username):
  83. print storedlist[username]
  84. else:
  85. print 'Username not find!!'
  86. return 0
  87. storedlist.pop(username)
  88. except:
  89. print "err delete"
  90. finally:
  91. write(storedlist)
  92.  
  93. def update(storedlist):
  94. try:
  95. #not key ?
  96. username=raw_input("Please input update username:")
  97. if storedlist.has_key(username):
  98. print storedlist[username]
  99. else:
  100. print 'Username not find!!'
  101. return 0
  102. emailbox=raw_input("Please input update email:")
  103. storedlist[username]=emailbox
  104. except:
  105. print "err update"
  106. finally:
  107. write(storedlist)
  108.  
  109. def write(stored):
  110. f=file(shoplistfile,'w')
  111. p.dump(stored,f)
  112. f.close()
  113.  
  114. def index():
  115. if os.path.exists(shoplistfile):
  116. menu()
  117. else:
  118. print 'Contacts not find!'
  119. print 'Create Contacts...'
  120. create_con()
  121.  
  122. def create_con():
  123. shoplist={}
  124. try:
  125. f=file(shoplistfile,'w')
  126. p.dump(shoplist,f)
  127. except IOError:
  128. print 'find not file!!'
  129. finally:
  130. f.close()
  131. menu()
  132.  
  133. def help():
  134. """
  135. ------------------------
  136. ==>>help
  137. ==>>add < username email >
  138. ==>>delete < username >
  139. ==>>update < username newemail >
  140. ==>>select < username >
  141. ==>>quit
  142. ------------------------"""
  143. print help.__doc__
  144.  
  145. if __name__=='__main__':
  146. 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. Keil 报错汇总

    main.c(6): warning:  #1-D: last line of file ends without a newline 解决:main.c 最后一行加回车就可以了. keil中文注释出 ...

  2. 1.3.4、CDH 搭建Hadoop在安装之前(端口---Impala使用的端口)

    Impala使用的端口 Impala使用下表中列出的TCP端口.在部署Impala之前,请确保在每个系统上打开这些端口. Component Service Port Access Requireme ...

  3. ROW_NUMBER() OVER(PARTITION BY ORDER BY )RN 只选一行

    ') ; SELECT DISTINCT PEGGED_SO_ID,PEGGED_SO_LINE_ID ,ITEM_ID ,QUANTITY ,LOCATION ,SITEID ,ROW_NUMBER ...

  4. 调css时候,设置margin-left没有效果

    调css时候,如果设置margin-left没有效果,可能是span不是块元素.设置display:block;即可.

  5. C#中与C++中的 LPWSTR(wchar_t *) 对应的类型

    1.设置 CharSet = CharSet.Unicode [DllImport("test.dll", EntryPoint = "sum()", Char ...

  6. python--第七天总结

    引言 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” [面向对象编程(Obj ...

  7. cdh5.13.1 hadoop hdfs HA模式无法启动

    经过观察日志发现,JN三个节点启动正常,只有NN节点启动时提示JN节点没有格式化 停止HDFS下面所有服务 先启动JN节点 然后启动一个NN节点,观察三个JN节点日志 发现其中一个节点的日志正常,没有 ...

  8. 第三章 列表(b)无序列表

  9. 高级测试岗位面试题---MARK

    直接手写一个python类 直接手写一个构造函数 紧接着上面的代码,直接手写,补充完整代码,要求对列表中的人进行排序,并筛选出分数大于80的人的名单,组成一个新的列表显示出来. class Perso ...

  10. 关于set_output_delay与set_input_delay概念与用法

    一.  这两条约束语句都是针对板级延时而言的. 语句中必须的有是,时钟与port. 二.   set_input_delay 用于数据输入端口,调节数据输入与时钟输入到来的相位关系. 当FPGA外部送 ...