You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于用户输入修改txt文件指定行的特定内容(Python航班系统项目)

机票预订系统航班时刻表编辑功能实现

需求背景

  • 开发大学课程机票预订系统项目,要求禁止使用第三方模块、禁止使用全局变量
  • 航班数据存储在schedule.txt文件中,每行对应一个航班,字段包含:唯一预订码、航班号、航空公司、出发地、目的地、出发日期

原有实现问题

原有编辑代码存在两个核心问题:

  1. 全局替换所有匹配内容,文件中存在大量重复字段(比如所有航班出发地都是KUALA LUMPUR)时会误改无关内容
  2. 代码存在语法错误:写入文件时错误调用了已失效的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,操作步骤:

  1. 输入预订码:100
  2. 输入旧内容:BEIJING
  3. 输入新内容:SHANGHAI
    程序只会修改对应[100]行的BEIJING字段,其他行的重复内容不会被改动。

内容的提问来源于stack exchange,提问作者L.zh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:36:03