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' ...
随机推荐
- 开源日志记录工具log4j
前言:当我们进行大的项目书写的时候或者我们选择维护程序的时候,想知道几点几时我们录入的数据有bug是那么我们就采用--------------------------->log4j记录日志的信息 ...
- 【干货分享】Node.js 中文学习资料和教程导航
这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...
- JS中数组去除重复的方法
function unique(arr) { var result = [], hash = []; for (var i = 0, elem; (elem = arr[i]) != null; i+ ...
- windows.open()、close()方法详解
windows.open()方法详解: window.open(URL,name,features,replace)用于载入指定的URL到新的或已存在的窗口中,并返回代表新窗口的Win ...
- cell重用的几种方式
1.使用xib重用 //ios6 之后推荐大家使用的重用方式 //动态的使用self获得当前类名,来作为唯一的标示 NSString * identifier = NSStringFromClass( ...
- Nodejs学习笔记(四)--- 与MySQL交互(felixge/node-mysql)
目录 简介和安装 测试MySQL 认识一下Connection Options MYSQL CURD 插入 更新 查询 删除 Nodejs 调用带out参数的存储过程,并得到out参数返回值 结束数据 ...
- HTML <a> 标签
一,定义和用法 所有浏览器都支持 <a> 标签. <a> 标签定义超链接,用于从一张页面链接到另一张页面. <a> 元素最重要的属性是 href 属性,它指示链接的 ...
- CRM 2013 中业务流程的
在CRM 2013 中有一个新功能就业务流程,它可以引导用户在既定好的业务规则下操作表单,实现业务之前的衔接.并且让衔接可以视化,能清楚定位到当前的流程在那个节点.我们在配置视图的时候可以将流程阶段放 ...
- SQLite Design and Concepts
API 分为两大类 core API. 基本的SQL操作 extension API. 创建自定义的SQL操作. 基本数据结构 需要了解的组成部分有连接.statments.B树.pager. 为了写 ...
- Android 友盟分享躺过的几个坑,大坑,坑爹啊
前言:公司上线了一个项目,做Android 客户端集成友盟分享,在做得过程中,遇到了下面3个问题,希望其他小伙伴注意. ) 错误1: 1.错误描述 我是照着友盟的集成文档一步一步的集成的,做完后,发现 ...