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

3 投票
1 回答
8788 浏览
提问于 2025-04-21 09:12

我正在练习我的Python技能,写一个电话簿程序。我可以搜索和添加条目,但删除条目时遇到了很多麻烦。

我想找到一行与我的搜索匹配的内容,然后删除它以及接下来的4行。我这里有一个删除的函数:

def delete():
    del_name = raw_input("What is the first name of the person you would like to delete? ")
    with open("phonebook.txt", "r+") as f:
            deletelines = f.readlines()
            for i, line in enumerate(deletelines):
                if del_name in line:
                    for l in deletelines[i+1:i+4]:
                        f.write(l)

但是这个不管用。

我该如何从这样的文本文件中删除多个条目呢?

1 个回答

1

直接回答你的问题:你可以使用 fileinput 来轻松地修改一个文本文件,而不需要创建新的文件。

import fileinput
file = fileinput.input('phonebook.txt', inplace=True)

for line in file:
     if word_to_find in line:
         for _ in range(4): # skip this line and next 4 lines
             next(file, None)
     else:
         print line,

为了避免把整个文件都读到内存中,这个方法会在后台帮你处理一些事情——它会把你原来的文件移动到一个临时文件中,写入新的内容,然后再删除这个临时文件。

更好的建议是:看起来你自己做了一个序列化的解决方案。可以考虑使用一些内置的库,比如 csvjsonshelve,甚至 sqlite3,这样可以更方便地保存你的数据。

撰写回答