如何基于用户输入修改txt文件指定行的特定内容(Python航班系统项目)
机票预订系统航班时刻表编辑功能实现
需求背景
- 开发大学课程机票预订系统项目,要求禁止使用第三方模块、禁止使用全局变量
- 航班数据存储在
schedule.txt文件中,每行对应一个航班,字段包含:唯一预订码、航班号、航空公司、出发地、目的地、出发日期
原有实现问题
原有编辑代码存在两个核心问题:
- 全局替换所有匹配内容,文件中存在大量重复字段(比如所有航班出发地都是KUALA LUMPUR)时会误改无关内容
- 代码存在语法错误:写入文件时错误调用了已失效的
schedule句柄,实际应该用当前with块定义的file句柄
原有代码如下:
with open('schedule.txt') as new_schedule: contents = new_schedule.read() old_data = str(input("Data to edit: ")) new_data = str(input("New data: ")) contents = contents.replace(old_data, new_data) with open('schedule.txt', 'w') as file: schedule.write(contents)
优化后实现方案
利用每个航班的唯一预订码定位行,仅对目标行做替换,完全避免全局替换的误改问题:
def edit_schedule(): # 读取所有行内容 with open("schedule.txt", "r", encoding="utf-8") as f: lines = f.readlines() # 获取要修改的航班唯一预订码 target_booking_code = input("请输入要修改的航班预订码(数字部分,如100、200):").strip() target_sign = f"[{target_booking_code}]" old_content = input("请输入该行要修改的旧内容:").strip() new_content = input("请输入替换后的新内容:").strip() # 遍历所有行,仅修改匹配预订码的行 for i in range(len(lines)): if target_sign in lines[i]: lines[i] = lines[i].replace(old_content, new_content) break # 写回文件 with open("schedule.txt", "w", encoding="utf-8") as f: f.writelines(lines) print("修改完成") # 调用函数执行编辑 edit_schedule()
使用说明
比如需要修改预订码为100的MH371航班的目的地从BEIJING改为SHANGHAI,操作步骤:
- 输入预订码:
100 - 输入旧内容:
BEIJING - 输入新内容:
SHANGHAI
程序只会修改对应[100]行的BEIJING字段,其他行的重复内容不会被改动。
内容的提问来源于stack exchange,提问作者L.zh
相关产品推荐
相关产品推荐

