[python]小练习__创建你自己的命令行 地址簿 程序
创建你自己的命令行 地址簿 程序。
在这个程序中,你可以添加、修改、删除和搜索你的联系人(朋友、家人和同事等等)以及它们的信息(诸如电子邮件地址和/或电话号码)。
这些详细信息应该被保存下来以便以后提取。
python version 3.4.3
#创建你自己的命令行 地址簿 程序。在这个程序中,
#你可以添加、修改、删除和搜索你的联系人(朋友、家人和同事等等)
#以及它们的信息(诸如电子邮件地址和/或电话号码)。
#这些详细信息应该被保存下来以便以后提取。
# python version 3.4.3
import pickle as p
import sys
import os filename = 'phonebook.data' #创建一个类表示人的信息
class member:
def __init__(self,name,mail,phone):
self.name = name
self.mail = mail
self.phone = phone #从文件中取出对象并返回
def readbypickle(filename):
f = open(filename,'rb')
infos = p.load(f)
f.close()
return infos #将对象写入文件中
def writebypickle(infos,filename):
f = open(filename,'wb')
p.dump(infos,f)
f.close() def scanall():
infos = readbypickle(filename)
for name,info in infos.items():
print(name,'\t',info)
del infos
#infos在这里是对象,用完记得清掉 #key in someone,receive the info
def search():
infos = readbypickle(filename)
person = input('Please enter the name you are search:')
if person in infos:
print('Result:',infos[person])
else:
print('No data!')
del infos def update():
info = input('Please enter your updating info like:someone,abc@163.com,123: \n')
info_1 = info.split(',')
temp = member(info_1[0],info_1[1],info_1[2])
infos = readbypickle(filename)
infos[temp.name] = temp.mail + ',' + temp.phone
writebypickle(infos,filename)
del infos def delete():
infos = readbypickle(filename)
info = input('Please enter the name that you want to delete: ')
try:
del infos[info]
except:
print('delete failed,please check your input.')
finally:
print(infos)
writebypickle(infos,filename)
del infos def main():
while True:
command = input('\n==========Menu==========\n1 scan\n2 search\n3 update\n4 delete\n5 exit\n')
if command == '':
scanall()
elif command == '':
search()
elif command == '':
update()
elif command == '':
delete()
else:
sys.exit()
print('VersionInfo:',sys.version)
if(os.path.exists(filename)):
main()
else:
infos = {'Rebecah':'Rebecah@163.com,12345'}
writebypickle(infos,filename)
main()
[python]小练习__创建你自己的命令行 地址簿 程序的更多相关文章
- Vue Create 创建一个新项目 命令行创建和视图创建
Vue Create 创建一个新项目 命令行创建和视图创建 开始之前 你可以先 >>:cd desktop[将安装目录切换到桌面] >>:vue -V :Vue CLI 3.0 ...
- 用 nodejs 写一个命令行工具 :创建 react 组件的命令行工具
用 nodejs 写一个命令行工具 :创建 react 组件的命令行工具 前言 上周,同事抱怨说 react 怎么不能像 angular 那样,使用命令行工具来生成一个组件.对呀,平时工作时,想要创建 ...
- python模块----optparse模块、argparse模块 (命令行解析模块)
简介 optparse module---自版本3.2以来已弃用:optparse模块已弃用,将不再进一步开发:将继续使用argparse模块进行开发.optparse使用一种更具声明性的命令行解析方 ...
- 命令行创建Android应用,命令行生成签名文件,命令行查看签名信息,对APK包签名并编译运行
一.命令行创建Android应用 android create project -n HelloWorld -t android-22 -p HelloWorld1 -k org.crazyit.he ...
- OpenCV2+入门系列(二):图像的打开、创建与显示(命令行)
前置知识:数字图像的简略知识 这里只是最基础的知识,上课如果稍微听了课的同学可以直接略过不不看. 彩色图像: 对于一副数字图像,对于一副RGB色彩空间的彩色数字图像,它一共有宽X高个像素格子,每个格子 ...
- windows小技巧 从文件夹直接打开命令行位置
windows下从命令行打开某个目录下的东东时,会一直cd ~~~~,更简单的是: 直接用鼠标找到该文件夹或者文件,按住Shift键然后点击鼠标右键,选择"在此处打开命令行"即可 ...
- MySQL Docker容器实例创建并进入MySQL命令行
首先需要明白的一点是: docker镜像是一个模版,docker容器是一个实例,它可以被启动与关闭. 我们需要先有MySQL的docker镜像,使用命令: docker pull mysql 拉取最新 ...
- 【转】我的第一个Python小程序
原文网址:http://blog.csdn.net/randyqiu/article/details/4484089 人的每个第一次都有点特别的意义,所以下面这个小程序我把他记录下来做个纪念. 因为要 ...
- Scrapy框架——介绍、安装、命令行创建,启动、项目目录结构介绍、Spiders文件夹详解(包括去重规则)、Selectors解析页面、Items、pipelines(自定义pipeline)、下载中间件(Downloader Middleware)、爬虫中间件、信号
一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可 ...
随机推荐
- octet-stream
firefox突然变成了用gedit打开pdf文件, Where the link to http://download.jw.org/files/media_m...E_20150201.pdf c ...
- wpf之数据触发器DataTrigger
wpf, 根据绑定的属性的值的不同(数据分类),界面上显示不同的控件(绑定不同类型的属性),可以使用数据库触发器DataTrigger实现这一功能. 实现的效果如下: 首先建立实体类: 更改通知类: ...
- Android OpenGL ES(七)基本几何图形定义 .
在前面Android OpenGL ES(六):创建实例应用OpenGLDemos程序框架 我们创建了示例程序的基本框架,并提供了一个“Hello World”示例,将屏幕显示为红色. 本例介绍Ope ...
- webservice(soap)接口的加密,SHA-1实现
import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security. ...
- Android中自定义veiw使用Java中的回调方法
//------------------MainActivity----中---------------------------------- import android.os.Bundle;imp ...
- CodeForces 701C They Are Everywhere(map的应用)
这个题比较好的解决办法,我觉得还是map,map的size可以很快的知道我们选了几个字母,而且可以作为计数器,知道每一个字母出现了多少次, erase函数可以清除掉一个元素. 所以,定义两个指针L和R ...
- cocos2d-x 3.x随机数
1.使用标准库std::rand()函数 rand();//产生0~RAND_MAX(0x7fff=32767)间的int类型随机数 rand()%;//产生0~5间的int类型随机数,不包括5 2. ...
- Activity not started, its current task has been brought to the front的解决办法
删除bin目录下所有文件,重新启动在试试
- PHP学习笔记之数组篇
摘要:其实PHP中的数组和JavaScript中的数组很相似,就是一系列键值对的集合.... 转载请注明来源:PHP学习笔记之数组篇 一.如何定义数组:在PHP中创建数组主要有两种方式,下面就让我 ...
- Sichuan State Programming Contest 2012 C。Counting Pair
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=118254#problem/C 其实这道题目不难...就是没有仔细分析... 我们可以发现 ...