我正在尝试使用单独的函数将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上的一些例子,到目前为止我仍然卡住了。提前谢谢!
答案 0 :(得分:1)
您需要在removeebl
函数中重新编写所有内容之前截断该文件,以便在编写更新的内容之前删除过时的内容:
...
if _ip in readfile:
readfile = readfile.replace(_ip, "hi")
f.seek(0); f.truncate()
f.write(readfile)