Python地址簿
#!/usr/bin/python
#coding=UTF-8
# FileName:address.py
# Python地址簿
import cPickle as p;
import os;
import sys;
class Address:
'''Python地址簿'''
# 构造函数
def __init__(self):
self.dataFileName = 'address.data';
self.dataPath = os.getcwd() + os.sep;
handle = file(self.dataPath + self.dataFileName, 'w');
try:
self.peopleList = p.load(handle);
except:
print '%s is empty.initializing...'%(self.dataFileName);
self.peopleList = {};
handle.close();
###
# 添加一个地址簿
# @access public
# @author zhaoyingnan 2016-03-01 10:10:46
# @param string username 人名
# @param string marks 备注
# @param string mobile 手机号码
# @param string email 邮箱
# @return mix
# @note
###
def addPeople(self, username, marks, mobile, email):
'''添加一个地址簿'''
if self.peopleList.get(username, 404) == 404:
newPeople = {'username':username, 'marks':marks, 'mobile':mobile, 'email':email};
self.peopleList[username] = newPeople;
else:
'already exist.'; ###
# 删除一个地址簿
# @access public
# @author zhaoyingnan 2016-03-01 10:16
# @param string username 人名
# @return mix
# @note
###
def delPeople(self, username):
if self.peopleList.get(username, 404) == 404:
print '%s non-existent.'%(username);
else:
del self.peopleList[username];
print 'ok.'; ###
# 修改一个地址簿
# @access public
# @author zhaoyingnan 2016-03-01 10:18
# @param string username 人名
# @param string index 索引(username/marks/mobile/email)
# @param string value 索引对应的值
# @return mix
# @note
###
def updatePeople(self, username, index, value):
if self.peopleList.get(username, 404) == 404:
print '%s non-existent.'%(username);
#sys.exit('%s non-existent!'%(username));
else:
self.peopleList[username][index] = value; ###
# 获取列表
# @access public
# @author zhaoyingnan 2016-03-01 10:21
# @return string
# @note
###
def getPeople(self):
if len(self.peopleList) > 0:
for username,arList in self.peopleList.items():
print '-------------------------------';
print '\t%s\t'%(username);
for key,value in arList.items():
print '%s\t%s'%(key, value);
print '-------------------------------';
else:
print '%s is empty.'%(self.dataFileName); # 将地址播存储在文件中
def __del__(self):
handle = file(self.dataPath + self.dataFileName, 'w');
p.dump(self.peopleList, handle);
handle.close(); address = Address();
address.addPeople('lee', 'LiHongBin', 18911937250, '791520450@qq.com');
address.addPeople('zhaoyn', 'ZhaoYingNan', 15932279586, '409586363@qq.com');
address.addPeople('Mr.Zhu', 'ZhuXiaoHuan', 13303028786, '12802390939@qq.com');
address.delPeople('Mr.Zhu');
address.updatePeople('Liu', 'marks', 'LiuQing');
address.updatePeople('zhaoyn', 'marks', 'Mr.Zhao');
address.getPeople();
Python地址簿的更多相关文章
- [python]小练习__创建你自己的命令行 地址簿 程序
创建你自己的命令行 地址簿 程序. 在这个程序中,你可以添加.修改.删除和搜索你的联系人(朋友.家人和同事等等)以及它们的信息(诸如电子邮件地址和/或电话号码). 这些详细信息应该被保存下来以便以后提 ...
- 用 eric6 与 PyQt5 实现python的极速GUI编程(系列04)---- PyQt5自带教程:地址簿(address book)
[引子] 在PyQt5自带教程中,地址簿(address book)程序没有完全实现界面与业务逻辑分离. 本文我打算用eric6+PyQt5对其进行改写,以实现界面与逻辑完全分离. [概览] 1.界面 ...
- 供应商和管理员查看供应商地址簿信息SQL
--管理员查看地址簿 SELECT hps.party_site_id, hps.party_site_name AS address_name, 'CURRENT' AS status, hzl.a ...
- iOS9中关于地址簿ABAddressBookXXX之类方法被废弃的解决
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在iOS9的SDK中我们会发现原来地址簿权限查询,获取以及创建 ...
- 网络协议 16 - DNS 协议:网络世界的地址簿
[前五篇]系列文章传送门: 网络协议 11 - Socket 编程(下):眼见为实耳听为虚 网络协议 12 - HTTP 协议:常用而不简单 网络协议 13 - HTTPS 协议:加密路上无尽头 网络 ...
- Derek解读Bytom源码-P2P网络 地址簿
作者:Derek 简介 Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom ...
- foxmail地址簿导入thunderbird的乱码问题 (转载)
转自:http://blog.csdn.net/gexueyuan/article/details/9032595 由于foxmail的地址簿格式和thunderbird的格式不一样,另外也存在编码问 ...
- iOS 获取联系人,并调用系统地址簿UI
1.加入 AddressBook库 推断授权状态 -(bool)checkAddressBookAuthorizationStatus { //取得授权状态 ABAuthorizationStatus ...
- python 03
数据结构 在 python 中有4种内建数据结构, 列表, 元组, 字典和集合. 列表 list 有序项目的数据结构, 类似数组, 是对象. 列表用中括号中用逗号分隔的项目定义.例如 ['apple' ...
随机推荐
- Node.JS事件驱动机制
1.事件驱动程序绑定事件及事件的处理程序 eventEmitter.on('eventName', eventHandler); 我们可以通过程序触发事件 // 触发事件 eventEmitter.e ...
- long和BigDecimal引发的管理思考
关于long.double.BigDecimal在效率.可用性.灵活性等等方面的技术性讨论和测试其实在网上已经很多了,本文也不是打算讨论他们的实现的,其实笔者也曾在很长的职业生涯周期中一度拘泥于此.但 ...
- C#如何实现一个简单的流程图设计器
以前看过不少Window Form开发的流程图设计器,支持节点拖放,非常方便即可设计出很美观的流程图,作为一个程序员,对其内部实现原理一直很好奇,感叹有朝一日自己如果可以开发一款类似的软件那是多么让人 ...
- jQuery原型方法each使用和源码分析
jQuery.each方法是jQuery的核心工具方法之一,通用例遍方法,可用于例遍对象和数组.不同于例遍 jQuery 对象的 $().each() 方法,此方法可用于例遍任何对象.通常需要两个参数 ...
- Quartz.NET---任务调度框架
在我们的程序中,可能经常会遇到"每隔多久执行XXX任务"这样的问题:每天晚上24:00审核用户提交的申请:每隔1分钟去数据库中检索用户是否有新的消息:... ...那么Quar ...
- 【Leafletjs】2.添加marker到地图
本人建了一个Leaflet交流群:Leaflet&WebGIS 331437754 接着上篇我们在地图中添加一个marker,非常简单只需添加如下代码即可: var marker = L.m ...
- mac jdk 6设置
新装的mac 系统10.10 ,jdk是1.8,因为一些工具要使用 jdk 6,以下是设置过程 查看版本 java -version 查看java是再哪:在/usr/bin/java whereis ...
- 对抽屉效果几大github第三方库的调研
在公司项目新版本方案选择中,对主导航中要使用的抽屉效果进行了调研.主要原因是旧的项目中所用的库ECS评价不是很好.现对当下比较火的几大热门抽屉效果的第三方库进行了调研.代码全部选自github 如果你 ...
- tomcat中的JSP引擎
jsp文件解析成class文件过程需要利用tomcat的jasper组件. Jasper是tomcat中使用的JSP引擎,在Tomcat 6中使用的是Jasper 2,相对于原来的版本作了不少的改进, ...
- 动画效果 View控件的显示和隐藏效果
显示动画: mShowAction = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 1.0f, Animation.RELATIVE_ ...