[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的用途十分广泛,可 ...
随机推荐
- TOMCAT-publishing to tomcat v7.0 server at
因为tomcat的work文件没有清空,导致MyEclipse部署在server.xml文件中的项目路径是错误的. 解决办法:清空work文件夹 下面这个勾勾是MyEclipse自动发布项目路径的选项
- POJ 2234 Matches Game 尼姆博弈
题目大意:尼姆博弈,判断是否先手必胜. 题目思路: 尼姆博弈:有n堆各a[]个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜. 获胜规则:ans=(a[1]^a[ ...
- Qt 5.5 tr usage
in .cpp file, wherever you want, wrap QString with a tr("somesz") rendering it ready to be ...
- Swift\本地文件管理
转载自:http://www.coloroud.com/2015/06/01/Swift-File-Manager/ 开头 看来Swift这趟浑水是非干不可,既然如此,那索性就来的彻底吧,来一次全方位 ...
- android上的JAVA8:使用retrolambda
android上的JAVA8:使用retrolambda posted by juuda 2015年6月3日 下午7:33 under Android Java8引入了lambda表达式,让许多开发者 ...
- 安卓开发-使用XML菜单布局简单介绍
使用xml布局菜单 目前为止我们都是通过硬编码来增加菜单项的,android为此提供了一种更便利的方式,就是把menu也定义为应用程序的资源,通过android对资源的本地支持,使我们可以更方便地 ...
- ntp源码解读(一)
/* * session_key - generate session key * * This routine generates a session key from the source add ...
- POJ 3419 Difference Is Beautiful(RMQ+二分 或者 模拟)
Difference Is Beautiful Time Limit:5000MS Memory Limit:65536KB 64bit IO Format:%lld & %l ...
- Python基础学习1---函数
Python函数篇 函数是重用的程序选, 他们允许给一块语句一个名称,然后可以在你的程序的任何地方是使用这个名称任意多次地运行这个语句块.这个就被称为 调用 函数.比如内建了很多高效的函数 如len ...
- MySQL 建表
SET NAMES utf8; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for ` ...