#!/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地址簿的更多相关文章

  1. [python]小练习__创建你自己的命令行 地址簿 程序

    创建你自己的命令行 地址簿 程序. 在这个程序中,你可以添加.修改.删除和搜索你的联系人(朋友.家人和同事等等)以及它们的信息(诸如电子邮件地址和/或电话号码). 这些详细信息应该被保存下来以便以后提 ...

  2. 用 eric6 与 PyQt5 实现python的极速GUI编程(系列04)---- PyQt5自带教程:地址簿(address book)

    [引子] 在PyQt5自带教程中,地址簿(address book)程序没有完全实现界面与业务逻辑分离. 本文我打算用eric6+PyQt5对其进行改写,以实现界面与逻辑完全分离. [概览] 1.界面 ...

  3. 供应商和管理员查看供应商地址簿信息SQL

    --管理员查看地址簿 SELECT hps.party_site_id, hps.party_site_name AS address_name, 'CURRENT' AS status, hzl.a ...

  4. iOS9中关于地址簿ABAddressBookXXX之类方法被废弃的解决

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在iOS9的SDK中我们会发现原来地址簿权限查询,获取以及创建 ...

  5. 网络协议 16 - DNS 协议:网络世界的地址簿

    [前五篇]系列文章传送门: 网络协议 11 - Socket 编程(下):眼见为实耳听为虚 网络协议 12 - HTTP 协议:常用而不简单 网络协议 13 - HTTPS 协议:加密路上无尽头 网络 ...

  6. Derek解读Bytom源码-P2P网络 地址簿

    作者:Derek 简介 Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom ...

  7. foxmail地址簿导入thunderbird的乱码问题 (转载)

    转自:http://blog.csdn.net/gexueyuan/article/details/9032595 由于foxmail的地址簿格式和thunderbird的格式不一样,另外也存在编码问 ...

  8. iOS 获取联系人,并调用系统地址簿UI

    1.加入 AddressBook库 推断授权状态 -(bool)checkAddressBookAuthorizationStatus { //取得授权状态 ABAuthorizationStatus ...

  9. python 03

    数据结构 在 python 中有4种内建数据结构, 列表, 元组, 字典和集合. 列表 list 有序项目的数据结构, 类似数组, 是对象. 列表用中括号中用逗号分隔的项目定义.例如 ['apple' ...

随机推荐

  1. [翻译]Autofac 解析服务

    注册组件以后,通过容器或 ILifetimeScope 的 Resolve 方法解析服务: var builder = new ContainerBuilder(); builder.Register ...

  2. 图解“管道过滤器模式”应用实例:SOD框架的命令执行管道

    管道和过滤器 管道和过滤器是八种体系结构模式之一,这八种体系结构模式是:层.管道和过滤器.黑板.代理者.模型-视图-控制器(MVC) 表示-抽象-控制(PAC).微核.映像. 管道和过滤器适用于需要渐 ...

  3. 15款帮助你实现响应式导航的 jQuery 插件

    对于我们大多数人来说,建立一个负责任的布局中最困难的方面是规划和导航的实现.由于没有真正经得起考验的通用解决方案,您可以使用的菜单设计风格将取决于正在建设的网站类型. 无论你正在建设什么类型的网站,在 ...

  4. swift学习笔记之-方法部分

    //方法部分 import UIKit //方法(Methods) /*方法是与某些特定类型相关联的函数,类.结构体.枚举都可以定义实例方法 实例方法(Instance Methods): 1.属于某 ...

  5. 深入理解javascript(一)

    此段文章摘自大叔的博客: 此文的目的是书写可维护的javascript代码. 最小的全局变量: JavaScript通过函数管理作用域.在函数内部声明的变量只在这个函数内部,函数外面不可用.另一方面, ...

  6. 谈谈GIS与地理学语言

    二十一世纪初,也就是我们这代人生活的昨天和今天,伴随着"空间觉醒",GIS逐渐被人们所熟知.以地学原理为依托的地理信息系统,在学术界被称为是第三代地理学语言.这个概念首先是由号称是 ...

  7. 高清VGA编码器|上海视涛科技

    VGA编码器(E200)简介 高清VGA编码器是上海视涛科技出品的高性能VGA编码产品.该VGA编码器是上海视涛科技完全自主研发,并适用于VGA信号的编码采集及网络传输的专用硬件设备.可兼容各厂家的N ...

  8. SharePoint 2013 JavaScript API 记录

    1.获取创建者字段(Author),oListItem为SPListItem对象 oListItem.get_item('Author')只能获取到对象,获取用户名要用oListItem.get_it ...

  9. Android提交数据到JavaWeb服务器实现登录

    之前学习Android提交数据到php服务器没有成功,在看了两三个星期的视频之后,现在终于实现了与服务器的交互.虽然完成的不是PHP端的,但是在这个过程还是学到了不少东西的.现在我先来展示一下我的成果 ...

  10. 极其简单的搭建eclipse的android开发环境

    这篇博客是关于如何搭建eclipse的android开发环境, 与网上的其他博客不同,我的方法比他们简单的多,所 以推荐给大家. 搭建eclipse的android开发环境步骤: 1.配置JDK(Ja ...