Python从TXT文件加载数据到字典失败,菜单功能故障求助
Python电话簿程序:保存/加载数据功能修复
问题描述
开发的电话簿程序无法正常完成数据保存与加载:
- 菜单选项5将字典数据写入
telephone.txt后,菜单6无法将文件数据转换为字典格式 - 程序重启后,加载数据时无法将原有保存的数据正确追加到初始字典中
核心错误分析
- 分隔符不匹配:保存数据(菜单5)时用空格分隔姓名与号码,但加载(菜单6)时错误使用逗号分割,直接导致分割失败
- 数据类型不一致:加载时将号码存储为列表
[num],但原字典中号码是字符串类型,格式不统一 - 未处理换行符:读取文件时未去除每行末尾的换行符,导致号码字符串包含多余的
\n
修正后的完整代码
telephone_dict = {"Nino":"0123", "Nick": "0234", "Jake":"0345"} menu = 1 while menu !=0: print(""" 1. Add new names and telephone numbers to the dictionary 2. Delete telephone numbers from the dictionary by the given name 3. View the entire telephone dictionary (names and numbers) 4. View/Search for a single entry by name 5. Save Data 6. Load Data 0. Exit """) menu = int(input("Choose menu option: ")) if menu == 1: name = str(input("Enter a name: ")) num = input("Enter a number: ") telephone_dict[name] = num if menu == 2: name = input("Name: ") if name in telephone_dict: del telephone_dict[name] print(f"{name} was deleted") else: print(f"{name} - was not found") if menu == 3: for name, num in telephone_dict.items(): print(f"Name: {name}\tNumber: {num}") print() if menu == 4: name = input("Name: ") if name in telephone_dict: print(f"The number is {telephone_dict[name]}") else: print(f"{name} was not found") if menu == 5: # 用with语句自动管理文件,统一用逗号分隔(避免姓名带空格的问题) with open('telephone.txt', 'w', encoding='utf-8') as file: for name, num in telephone_dict.items(): file.write(f"{name},{num}\n") if menu == 6: try: with open('telephone.txt', 'r', encoding='utf-8') as fr: for line in fr: # 去除换行符后按逗号分割 line = line.strip() if not line: continue # 跳过空行 name, num = line.split(',', maxsplit=1) # maxsplit=1避免姓名含逗号的情况 telephone_dict[name] = num # 保持字符串格式和原字典一致 print("Data loaded successfully") except FileNotFoundError: print("No saved data file found") if menu ==0: break
关键修改说明
- 统一分隔符:保存和加载都使用逗号作为分隔符,同时加入
maxsplit=1参数,避免姓名中包含逗号时分割出错 - 数据格式统一:加载时直接将号码赋值为字符串,和原字典的格式保持一致
- 文件操作优化:所有文件操作改用
with语句,自动处理文件关闭,避免资源泄漏 - 异常处理:加载时增加文件不存在的异常捕获,给出友好提示
- 细节优化:遍历字典改用
items()更高效,使用f-string优化输出格式,处理空行问题
内容的提问来源于stack exchange,提问作者tab
相关产品推荐
相关产品推荐

