如何用Python删除文本文件中的特定行?
假设我有一个文本文件,里面全是昵称。我想用Python把其中一个特定的昵称删除掉,我该怎么做呢?
19 个回答
52
我认为,最好的、最快的方法不是把所有东西都放在一个列表里,然后再打开文件写入,而是把文件重新写到其他地方。
with open("yourfile.txt", "r") as file_input:
with open("newfile.txt", "w") as output:
for line in file_input:
if line.strip("\n") != "nickname_to_delete":
output.write(line)
就这么简单!只需要一个循环,就能做到同样的事情。这样会快得多。
145
这个问题的解决方法只需要打开一次文件:
with open("target.txt", "r+") as f:
d = f.readlines()
f.seek(0)
for i in d:
if i != "line you want to remove...":
f.write(i)
f.truncate()
这个方法是以读写模式("r+")打开文件,然后使用seek来重置文件指针,接着用truncate来删除最后一次写入之后的所有内容。
280
首先,打开文件,把文件里的所有行都读出来。然后再以写入模式重新打开这个文件,把之前读出的行写回去,除了你想删除的那一行:
with open("yourfile.txt", "r") as f:
lines = f.readlines()
with open("yourfile.txt", "w") as f:
for line in lines:
if line.strip("\n") != "nickname_to_delete":
f.write(line)
在比较的时候,你需要用 strip("\n")
去掉换行符,因为如果你的文件最后没有换行符,那么最后一行也不会有换行符。