如何用Python删除文本文件中的特定行?

219 投票
19 回答
655322 浏览
提问于 2025-04-16 10:05

假设我有一个文本文件,里面全是昵称。我想用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") 去掉换行符,因为如果你的文件最后没有换行符,那么最后一行也不会有换行符。

撰写回答