python用open()替换文件中的字符串

时间:2017-01-03 19:58:20

标签: python

我正在尝试使用单独的函数将ip写入现有文件中的新行,而另一个函数则删除文件中的字符串(如果存在)。目前我提出的代码是:

def writeebl(_ip):
    filepath = "ebl.txt"
    with open(filepath, mode='a') as ebl:
        ebl.write(_ip)
        ebl.write("\n")


def removeebl(_ip):
    filepath = "ebl.txt"
    with open(filepath, mode='r+') as f:
            readfile = f.read()
            if _ip in readfile:
                readfile = readfile.replace(_ip, "hi")
                f.write(readfile)

writeebl("10.10.10.11")
writeebl("20.20.20.20")
removeebl("20.20.20.20")

我认为输出应该是只有10.10.10.11

的文件

首先运行文件内容:

10.10.10.11
20.20.20.20
10.10.10.11
hi
(empty line)

第二轮:

10.10.10.11
20.20.20.20
10.10.10.11
hi
10.10.10.11
hi
10.10.10.11
hi

我很困惑应该怎么做。我已经尝试了几种不同的方法来跟踪stackoverflow上的一些例子,到目前为止我仍然卡住了。提前谢谢!

1 个答案:

答案 0 :(得分:1)

您需要在removeebl函数中重新编写所有内容之前截断该文件,以便在编写更新的内容之前删除过时的内容:

...
if _ip in readfile:
     readfile = readfile.replace(_ip, "hi")
     f.seek(0); f.truncate()
     f.write(readfile)