贝尔多斯 2020-10-29 20:18 采纳率: 0%
浏览 116

关于使用python进行名片管理系统,使用文件保存信息存在的问题

代码如下,但是存在一个问题,就是如果userinfo.data中已经有内容了,在执行main()函数时,调用了load_to_list()函数加载了文件中的内容,如果再使用新增名片信息的功能,调用save_to_file()函数,不能将新增的内容保存至userinfo.data文件中,该文件中依旧是以前的信息,请问是哪里写错了吗?

card_manager.py

import card_func
def main():
while True:

    # 加载文件
    card_func.load_to_list()

    # 调用函数,打印功能选择菜单
    card_func.show_menu()

    # 提示用户进行输入
    choice_str = input("请选择操作序号:")

    # 判断用户输入是否为有效操作序列
    if choice_str in ["1", "2", "3", "4", "5", "6"]:
        # 新增名片
        if choice_str == "1":
            card_func.add_card()
        # 显示名片
        elif choice_str == "2":
            card_func.show_all_card()

        # 搜索名片
        elif choice_str == "3":
            print("搜索名片")

        # 修改名片
        elif choice_str == "4":
            print("修改名片")

        # 删除名片
        elif choice_str == "5":
            print("删除名片")

        # 保存名片
        elif choice_str == "6":
            card_func.save_to_file()

    # 用户输入0,则退出系统
    elif choice_str == "0":
        print("欢迎再次使用【名片管理系统】")
        break

    # 用户输入为非对应操作序列,则提示用用户重新输入
    else:
        print("您的输入有误,请重新输入!")

启动主函数

if name == "__main__":
main()

card_func.py

定义空列表保存用户信息

user_list = []

打印欢迎界面的函数

def show_menu():
print("*" * 50)
print("【1】. 新增名片")
print("【2】. 显示名片")
print("【3】. 搜索名片")
print("【4】. 修改名片")
print("【5】. 删除名片")
print("【6】. 保存名片")
print("【0】. 退出系统")
print("*" * 50)

新增名片功能

def add_card():

global user_list

# 1. 提示用户输入名片的详细信息
name_str = input("请输入姓名:")
phone_str = input("请输入电话号码:")
qq_str = input("请输入QQ号码:")
email_str = input("请输入邮箱:")

# 2. 将上述输入信息,封装为字典
user_dict = {"name": name_str,
             "phone": phone_str,
             "QQ": qq_str,
             "email": email_str
             }

# 3. 将上述字典追加到全局变量user_list中
user_list.append(user_dict)
print(user_list)

# 4. 提示用户添加完成
print("%s 的用户信息添加成功" % name_str)

保存名片至文件的函数

def save_to_file():

# global user_list

try:
    # 1. 打开文件
    save_file = open("userinfo.data", "w")

    # 2. 文件写入操作
    save_file.write(str(user_list))

    # 3. 关闭文件操作
    save_file.close()

    # 进行提示保存成功
    print("名片保存成功")

except Exception:
    print("名片保存失败!")

加载文件中名片信息至列表的函数

def load_to_list():

global user_list

try:
    # 1. 打开文件
    load_file = open("userinfo.data", "r")

    # 2. 读取操作
    user_list = eval(load_file.read())

    # 3. 关闭文件
    load_file.close()

except Exception:
    print("文件加载失败!")

显示所有名片信息函数

def show_all_card():
global user_list
print(user_list)

  • 写回答

1条回答 默认 最新

  • 放风喽 2020-10-29 22:10
    关注

    我差点被你坑死。

    加载文件

    load_to_list()

    把这句话扔到循环外面去。
    每次循环都读取一次文件,什么修改都没有了

    把“w+” 改为“w”

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序