【Python】【笔记】(知识点:利用pickle模板保存本地不丢失)制作一个简易的通讯录
《新手学Python系列笔记》上一个版本 https://www.52pojie.cn/thread-850764-1-1.html
坛友 gunxsword 指出 没有看到保存信息的代码,这个如果退出程序了,输入的内容,都消失了吧?在这一个版本中,我们通过pickle这个包来保存我们的通讯录
下一个版本,我计划利用EasyGui这个包将我们的通讯录改写成一个窗口界面
#请使用python3 以上版本打开
#需要安装 pickle 和 os 这两个包哦
import pickle,os
save_name = 'address_list.pcl'#通讯录存储的文件名称
save_dir = r'C:' #存储的文件位置
os.chdir(save_dir)
if save_name in os.listdir(save_dir):#判断之前是否保存过
with open(save_name, mode='rb') as address_file:
address_list = pickle.load(address_file)
else:
address_list = dict()
def save_file(unsaved_list):
with open(save_name , mode='wb') as unsaved_file:
pickle.dump(unsaved_list,unsaved_file)
print('|--- 欢迎进入通讯录程序 ---|')
print('|--- 1:查询联系人资料 ---|')
print('|--- 2:插入新的联系人 ---|')
print('|--- 3:删除已有联系人 ---|')
print('|--- 4:打印全部通讯录 ---|')
print('|--- 5:退出通讯录程序 ---|')
print(' ')
def add_adress_list(new_name):
if new_name in address_list:
print('您输入的姓名在通讯录已存在 -->>' , new_name + ':' + address_list)
y_n = input('是否需要修改用户的联系方式(y or n) :')
if y_n == 'y':
new_phone = input("请输入新的联系方式")
address_list = new_phone
print('修改联系人成功')
print(' ')
save_file(address_list)
else:
new_phone = input("请输入用户联系方式")
address_list = new_phone
print('添加联系方式成功-->>' , new_name + ':' + address_list)
print(' ')
save_file(address_list)
def find_adress_list(name):
if not(name in address_list):
print('没有查询到该联系人')
print(' ')
else:
print(name + ':' + address_list)
print(' ')
def del_adress_list(name):
if not(name in address_list):
print('没有查询到该联系人')
print(' ')
else:
del address_list
print('删除成功')
print(' ')
save_file(address_list)
while True:
print(' ')
cho = input('请输入相关的指令代码:')
if cho == '1':
if len(address_list) == 0:
print('您的通讯录没有任何联系人哦')
else:
name = input('请输入要查找的联系人姓名:')
find_adress_list(name)
print(' ')
elif cho == '2':
name = input('请输入要添加的联系人姓名:')
add_adress_list(name)
print(' ')
elif cho == '3':
if len(address_list) == 0:
print('您的通讯录还没有存储任何联系人哦')
else:
name = input('请输入要删除的联系人姓名:')
del_adress_list(name)
print(' ')
elif cho == '4':
if len(address_list) == 0:
print('您的通讯录还没有存储任何联系人哦')
else:
for i in address_list:
print(i + ': ' + address_list)
print(' ')
elif cho == '5':
print(' ')
print('-----感谢使用通信录程序----')
break
else:
print('您的输入有误,请重新输入')
print(' ')
应该在文件头加# -*- coding: utf-8 -*- 而不是让别人使用python3才对吧? ppff931111 发表于 2019-1-10 00:26
应该在文件头加# -*- coding: utf-8 -*- 而不是让别人使用python3才对吧?
python2里面需要,python3是支持中文的。
两者print函数用法有区别 我这个是用Python3写的 要是用python2运行会出错 hustlzp 发表于 2019-1-10 08:07
python2里面需要,python3是支持中文的。
两者print函数用法有区别 我这个是用Python3写的 要是用python ...
开头那句是为了在所有机器上都能正确显示中文吧 只支持你发Net破文,强壳分析,太牛逼了,如果你不发Net破文,我也就不上52了 我想问一下那个mac的话要怎么设置储存地址?
就是这个情况
页:
[1]