吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3850|回复: 5
收起左侧

[Python 转载] 【Python】【笔记】(知识点:利用pickle模板保存本地不丢失)制作一个简易的通讯录

[复制链接]
hustlzp 发表于 2019-1-9 22:04
《新手学Python系列笔记》
上一个版本 [url]https://www.52pojie.cn/thread-850764-1-1.html[/url]
坛友 指出
没有看到保存信息的代码,这个如果退出程序了,输入的内容,都消失了吧?
在这一个版本中,我们通过pickle这个包来保存我们的通讯录
下一个版本,我计划利用EasyGui这个包将我们的通讯录改写成一个窗口界面


[Python] 纯文本查看 复制代码
#请使用python3 以上版本打开
[/size][size=5]#需要安装 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[new_name])
        y_n = input('是否需要修改用户的联系方式(y or n) :')
        if y_n == 'y':
            new_phone = input("请输入新的联系方式")
            address_list[new_name] = new_phone
            print('修改联系人成功')
            print(' ')
            save_file(address_list)
    else:
        new_phone = input("请输入用户联系方式")
        address_list[new_name] = new_phone
        print('添加联系方式成功-->>' , new_name + ':' + address_list[new_name])
        print(' ')
        save_file(address_list)

def find_adress_list(name):
    if not(name in address_list):
        print('没有查询到该联系人')
        print(' ')
    else:
        print(name + ':' + address_list[name])
        print(' ')

def del_adress_list(name):
    if not(name in address_list):
        print('没有查询到该联系人')
        print(' ')
    else:
        del address_list[name]
        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[i])
        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

就是这个情况
WX20190201-234734@2x.png
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 01:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表