代码如下,但是存在一个问题,就是如果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)