如何在.txt文件中的各行之间循环,在其中找到一个字符串,然后替换一个单词?

时间:2019-01-24 16:08:50

标签: python

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

我正在编写函数“ change_status()”。 该函数将接收输入(ID),在.txt文件中循环查找具有所述ID的行,然后将单词“ active”替换为“ inactive”,或者将单词“ 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")

1 个答案:

答案 0 :(得分:1)

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

相关问题