调用了 cPickle 模块,更可靠了。
import os
import cPickle
#主函数
while(1):#一直运行
people_file='E:\\test.txt'
people={}
first=raw_input('Enter 1 for input name,Enter 2 for find name,Enter 3 for delect name:')
if(first=='1'):#add
name_add=raw_input("Enter name you want to add:")
kind_add=raw_input("Enter kind you want to add:")
number_add=raw_input("Enter number you want to add:")
E_mail_add=raw_input("Enter E_mail you want to add:")
f=file(people_file,'r')#
people=cPickle.load(f)
people[name_add]=kind_add,number_add,E_mail_add #再写入字典
f.close()
f=file(people_file,'w')#
cPickle.dump(people,f)#用cpickle函数将people存入f
f.close()
# for (key,value) in people.items():
# f.write('%s:%s\n'%(key,value))#将字典写入txt
# f.close()
elif(first=='2'):#find
find_name=raw_input("Enter name you want to find:")
flag=0
f=open(people_file,'r')#以只读模式打开文件
# lines=dict(line.strip().split(':') for line in f if line)#将文件内容转换为字典模式,怎么个流程暂时不懂
lines=cPickle.load(f)
for (key,value) in lines.items():
print '%s,%s'%(key,value)
if(key==find_name):
print lines[find_name]
f.close()
flag=1
break
if(flag==0):
print 'can not find this people'
elif(first=='3'):#delect 先读出,再删除,再重写
del_name=raw_input("Enter name you want to delect:")
f=open(people_file,'r')#以只读模式打开文件
# lines=dict(line.strip().split(':') for line in f if line)#将文件内容转换为字典模式,怎么个流程暂时不懂
lines=cPickle.load(f)
f.close()#关闭文件
for (key,value) in lines.items():
if(key==del_name):
del lines[del_name]
print 'delect:',del_name
f=open(people_file,'w')#以覆盖模式打开文件
for (key,value) in lines.items():
f.write('%s:%s\n'%(key,value))#将字典写入txt
print '%s:%s'%(key,value)
f.close()
#联系人信息删除函数