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' ...
随机推荐
- Webform(Linq高级查、分页、组合查询)
一.linq高级查 1.模糊查(包含) 1 public List<User> Select(string name) 2 { 3 return con.User.Where(r => ...
- (2)RGB-D SLAM系列- 工具篇(依赖库及编译)
做了个SLAM的小视频,有兴趣的朋友可以看下 https://youtu.be/z5wDzMZF10Q 1)Library depended 一个完整的SLAM系统包括,数据流获取,数据读取,特征提取 ...
- 也来谈谈wap端瀑布流布局
Definition 瀑布流布局,在视觉上表现为参差不齐的多栏布局,随着页面滚动条向下滚动,新数据不断被加载进来. 瀑布流对于图片的展现,是高效而具有吸引力的,用户一眼扫过的快速阅读模式可以在短时间内 ...
- 一步一步教你如何解锁被盗的iPhone 6S
即使你的iPhone6S设置了六位数的密码,甚至还设置了touch ID,但我要告诉你的是:你的手机仍然能被犯罪分子解锁. 事件背景 三天前,一位苹果用户的iPhone6S被偷了.随后,小偷重置了该用 ...
- 【IOS】从android角度来实现(理解)IOS的UITableView
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3403124.html 本人从在学校开始到现在上班(13年毕 ...
- Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition
Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition Property animation系统还提供了对ViewGroup中的View改变 ...
- Android View各种尺寸位置相关的方法探究
Android View各种尺寸位置相关的方法探究 本来想做一个View间的碰撞检测之类的. 动手做了才发现不是想象的那么简单. 首先,写好了碰撞检测的工具类如下: package com.mengd ...
- 是否要学SpringMVC
如题,希望大侠们指出,不能用Spring就觉得他什么都好,本帖子意在实际工作中,对是否将Spring引入项目及如何更好的使用Spring提出启发式意见.目前已有高人表达了自己对Spring的不满,让我 ...
- Android程序意外Crash后自动重启
1.自定义UncaughtExceptionHandler public class UnCeHandler implements UncaughtExceptionHandler { private ...
- 【代码笔记】iOS-点击cell时候的动画翻转
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...