import pickle
import sys
import os
filename = 'xyy.data'
# 创建一个类来表示人的信息
class member:
def __init__(self, name, mail, phone, address):
self.name = name
self.mail = mail
self.phone = phone
self.address = address
# 搜索联系人
def select():
f = open(filename,'rb')
contactlist = pickle.load(f)
print(contactlist)
s = input('Please enter the name which you want to select: ')
print(s, ' : ', contactlist[s])
# 添加、修改联系人
def update():
s = input('Please input contactor\'s name, mail,\
phone, address, for example: elizabeth,\
test@163.com,135123345678,Beijing Chaoyang district-->')
s1 = s.split(',')
pp = member(s1[0], s1[1], s1[2], s1[3])
f = open(filename,'rb')
contactlist = pickle.load(f)
contactlist[pp.name] = pp.mail + ',' + pp.phone+ ',' + pp.address
f = open(filename, 'wb')
pickle.dump(contactlist, f)
f.close()
del contactlist
# print the result
f = open(filename,'rb')
contactlist = pickle.load(f)
print(contactlist)
# 删除联系人
def delete():
f = open(filename,'rb')
contactlist = pickle.load(f)
print(contactlist)
s = input('Please input the person\'s name which you want to delete: ')
# 如果存在该联系人,则删除该联系人。如果不存在,程序出错,需要处理一下。
del contactlist[s]
print(contactlist)
f = open(filename, 'wb')
pickle.dump(contactlist, f)
f.close()
del contactlist
def main():
while True:
menu = input('''
1. select
2. add/update
3. delete
x. exit
''')
if menu == '1':
select()
elif menu == '2':
update()
elif menu == '3':
delete()
elif menu == 'x':
sys.exit()
else:
print('Don\'t have this option, please try again!')
if os.path.exists('xyy.data'):
main()
else:
f = open('xyy.data', 'wb')
contactlist = {'elizabeth' : 'test@163.com,13512345678,Beijing Chaoyang district'}
pickle.dump(contactlist, f)
f.close()
f = open(filename,'rb')
contactlist = pickle.load(f)
print(contactlist)
del contactlist
main()
注意的点:
- data文件里面必须要有内容,不然会出错
- dump时 wb
- load时 rb