`
zhongw
  • 浏览: 9092 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

A Byte of Python - 通讯录

阅读更多
什么也不说,直接上:
import pickle, os, logging

version = '0.0.1'

logging.basicConfig(
	filename='address_log.log', 
	level=logging.DEBUG,
	format='%(asctime)s: %(levelname)s: %(message)s'
)

book_file = 'address_book.data'

def save(name, phone, address):
#保存新记录。
#Todo:
#1. 增加异常处理:当文件存在,但为空时,load时会出错
#2. 目前保存的字段都是固定的,增加删除一个字段很麻烦,需要优化
	if not os.path.exists(book_file):
		book = {}
		f = open(book_file, 'wb')
		book[name]=[phone, address]
		pickle.dump(book, f)
		f.close()
		logging.info('新建地址本成功,并且新增了第一条数据,数据信息为:{0}'.format(book[name]))
		print('保存成功')
		print('')
		input('输入任意字符返回')
	else:		
		f = open(book_file, 'rb')
		book = pickle.load(f)
		f.close()
		f2 = open(book_file, 'wb')
		book[name]=[phone, address]
		pickle.dump(book, f2)
		f2.close()
		logging.info('保存名字为 {0} 的数据成功'.format(name))
		print('保存成功')
		print('')
		input('输入任意字符返回')
	
def view_all():
	f = open(book_file, 'rb')
	book = pickle.load(f)
	j = 1
	for i in book.keys():
		print ('----------第', j ,'条记录,总共', len(book), '条记录----------')
		print ('姓名:',i)
		print ('手机:',book[i][0])
		print ('地址:',book[i][1])
		j = j + 1
	f.close()
	logging.info('打印所有记录, 总共有{0}条数据'.format(len(book)))
	print('')
	input('输入任意字符返回')

def search(name): #以名字为键值进行查找
	f = open(book_file, 'rb')
	flg = False
	book = pickle.load(f)
	for i in book.keys():
		if i == name:
			print('查询结果:')
			print('姓名:', name)
			print('电话:', book[i][0])
			print('地址:', book[i][1])
			flg = False
			logging.info('查找到一条数据,姓名:{0}, 电话:{1}, 地址:{2}'.format(i, book[i][0], book[i][1]))
			print('')
			input('输入任意字符返回')
			break
		else:
			flg = True
	if flg:
		print('没有找到相关记录')
		logging.info('没有找到姓名为 {0} 的记录'.format(name))
		print('')
		input('输入任意字符返回')
		
def remove(name): #以名字为键值进行删除
	f = open(book_file, 'rb')
	book = pickle.load(f)
	book2 = book.copy()
	f.close()
	for i in book.keys():
		if i == name:
			f = open(book_file, 'wb')
			del book2[i]
			pickle.dump(book2, f)
			f.close()
			logging.info('成功删除姓名为 {0} 的记录'.format(name))
			print('成功删除名字为{0}的记录'.format(name))
			break;
	f.close()

def modify(name):#修改记录
	f = open(book_file, 'rb')
	book = pickle.load(f)
	book2 = book.copy()
	f.close()
	for i in book.keys():
		if i == name:
			f = open(book_file, 'wb')
			phone = input('输入电话号码:')
			address = input('输入地址:')
			book2[name] = [phone,address]
			pickle.dump(book2, f)
			logging.info('成功修改姓名为 {0} 的记录,新的电话号码是 {1}, 新的地址是: {2}'.format(name, phone, address))
			break
	print('')
	input('输入任意字符返回')
	
#主界面
while True:
	print('')
	print('1.查询所有记录')
	print('2.查询单个记录')
	print('3.修改记录')
	print('4.删除记录')
	print('5.新增记录')
	print('0.退出')
	print('')
	i = input('请输入:')
	if i == '1':
		view_all()
	elif i == '2':
		name = input('输入名字:')
		search(name)
	elif i == '3':
		name = input('输入名字:')
		modify(name)
	elif i == '4':
		name = input('输入名字:')
		remove(name)
	elif i == '0':
		print('你已退出')
		break
	elif i == '5':
		name = input('输入姓名:')
		phone = input('输入电话号码:')
		address = input('输入地址:')
		save(name, phone, address)
	else:
		print('输入错误,请重新输入')
		continue
分享到:
评论

相关推荐

    《简明 Python 教程》byte-of-python-chinese-edition

    《简明 Python 教程》byte-of-python-chinese-edition + pdf

    byte-of-python-chinese-edition

    《byte-of-python-chinese-edition》即《简明Python教程》,是一本面向初学者的Python入门教程书籍。由Swaroop C H所著,本书的宗旨是向读者介绍如何使用Python语言进行编程。2005年,沈洁元翻译了本书的1.20版,并...

    A Byte of Python-129页

    《A Byte of Python》是一本面向初学者的Python编程入门书籍,旨在帮助读者快速掌握Python语言的基础知识和核心概念。书中的内容涵盖了Python的诸多特性,适合不同背景的读者群体,无论是学术研究还是个人兴趣,都能...

    A-Byte-of-Python3(中文完整版).pdf

    《A Byte of Python》是一本全面介绍Python编程语言的入门书籍,该书的中文版《简明Python教程》主要面向初学者,并可供计算机行业的相关人员参考。书中以清晰的结构和突出的重点,覆盖了Python的基础知识,帮助读者...

    byte-of-python-chinese-edition(python入门)

    《简明Python教程》(原名《A Byte of Python》)是一本由Swaroop C H编写的自由图书,旨在为编程入门者提供一个使用Python语言进行编程的快速入门指南。这本书自首次发行以来,凭借其简洁明了的风格和丰富的实例,...

    A-Byte-of-Python-英文.pdf

    《A Byte of Python》是一本面向初学者的免费编程书籍,专门介绍Python 3语言。如果你对计算机的了解仅限于保存文本文件,那么这本书就是为你准备的。它旨在通过简单易懂的方式引导读者入门Python编程。 本书内容...

    A-byte-of-python 简明Python,高清版(中文版)

    《A-byte-of-python》是一本深受初学者喜爱的Python编程入门教程,中文版的发布使得更多中文用户能够方便地学习Python。这本书以其清晰易懂的风格和实用的示例,帮助读者快速掌握Python语言的基础知识和核心概念。...

    byte-of-python-chinese-edition.pdf

    《简明Python教程》是由Swaroop C H编写的,旨在向读者介绍如何使用Python语言进行编程。这本教程为初学者提供了关于Python编程语言的基础知识,涵盖了从安装Python环境到编写简单游戏的基本技能。本书以教材和指南...

    简明python教程-中文版( byte-of-python-chinese-edition.pdf )

    - **内容覆盖**:包括Python3的基础知识和使用方法,同时也提供了关于如何适应Python2的指导。 #### 二、教程内容框架 - **基础部分**:涵盖了运算符与表达式、控制流、函数、模块等基本概念,帮助读者快速掌握...

    最新 byte-of-python-chinese-edition(python简明教程)

    简明 Python 教程 《A Byte of Python》是一本由 Swaroop C H 编写,旨在于介绍如何使用 Python 语言进行编 程的自由图书。它以教材与指南的形式为入门者介绍 Python 语言。如果你对电脑知识的了解 仅限于如何保存...

    A-Byte-of-Python3(中文版).pdf

    "Python 编程基础知识" Python 是一种高级、解释型的编程语言,具有简洁的语法、强大的功能和丰富的标准库。Python 适合用于各种应用开发,如 Web 开发、科学计算、数据分析、人工智能、机器学习等。 Python 的...

    Byte of Python-cn_python_

    《Byte of Python-cn》是一本面向初学者的Python编程学习资料,它以其深入浅出的讲解方式,为读者提供了一条轻松掌握Python编程语言的路径。这本书覆盖了Python的基础知识,包括语法、数据结构、函数、模块、面向...

Global site tag (gtag.js) - Google Analytics