首页 > 解决方案 > 如何循环浏览 .txt 文件中的行,在其中找到一个字符串,然后替换一个单词?

问题描述

我在 .txt 文件中有一个车辆数据库。每辆车都在一个单独的行中,有一个 ID,并且可以是“活动的”或“不活动的”。

我正在编写函数“change_status()”。该函数将接收一个输入(ID),在 .txt 文件中循环查找具有该 ID 的行,然后将单词“active”替换为单词“inactive”,或者将单词“inactive”替换为单词“积极的”。

我的功能中的一切都在工作,除了一件事。我不知道如何覆盖现有行(我正在阅读的行),而不仅仅是在 txt 文件底部写一个状态更改的新行,这就是我得到的。

def change_status():
    id_to_change = input("Insert the ID of the Vehicle which you want to deactivate/activate: ")
    with open("Vehicles.txt", "r+") as file:
        lines = file.readlines()
        for line in lines:
            if id_to_change in line:
                if "active" in line:
                    new_line = line.replace("active", "inactive")
                    file.write(new_line)
                else:
                    new_line = line.replace("inactive", "active")
                    file.write(new_line)
            else:
                pass
        print("VEHICLE STATUS SUCCESSFULLY CHANGED")

标签: python

解决方案


最简单(尽管显然不是最有效)的解决方案是重写整个文件。else打开一个不同的文件进行输出,如果没有匹配,则写入未修改的行,而不是传入块。正如 Thomas Weller 指出的那样,就地编辑文件不是文件系统直接支持的操作,因此您需要更多逻辑来执行其他任何操作。


推荐阅读