hustlzp 发表于 2019-1-9 22:04

【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(' ')

ppff931111 发表于 2019-1-10 00:26

应该在文件头加# -*- coding: utf-8 -*- 而不是让别人使用python3才对吧?

hustlzp 发表于 2019-1-10 08:07

ppff931111 发表于 2019-1-10 00:26
应该在文件头加# -*- coding: utf-8 -*- 而不是让别人使用python3才对吧?

python2里面需要,python3是支持中文的。
两者print函数用法有区别 我这个是用Python3写的 要是用python2运行会出错

ppff931111 发表于 2019-1-11 01:49

hustlzp 发表于 2019-1-10 08:07
python2里面需要,python3是支持中文的。
两者print函数用法有区别 我这个是用Python3写的 要是用python ...

开头那句是为了在所有机器上都能正确显示中文吧

yasenhacker 发表于 2019-1-12 22:02

只支持你发Net破文,强壳分析,太牛逼了,如果你不发Net破文,我也就不上52了

为自己代言 发表于 2019-2-1 22:08

我想问一下那个mac的话要怎么设置储存地址?

为自己代言 发表于 2019-2-1 23:49


就是这个情况
页: [1]
查看完整版本: 【Python】【笔记】(知识点:利用pickle模板保存本地不丢失)制作一个简易的通讯录