Вопрос-Ответ

How to delete a specific line in a text file using Python?

Как удалить определенную строку в текстовом файле с помощью Python?

Допустим, у меня есть текстовый файл, полный псевдонимов. Как я могу удалить определенный псевдоним из этого файла, используя Python?

Переведено автоматически
Ответ 1

Сначала откройте файл и извлеките все свои строки из файла. Затем снова откройте файл в режиме записи и запишите свои строки обратно, за исключением строки, которую вы хотите удалить:

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") указать символ новой строки в сравнении, потому что, если ваш файл не заканчивается символом новой строки, самый последний символ также не будет. line

Ответ 2

Решение этой проблемы с помощью всего одного открытого:

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 / w ("r +") и использует seek для сброса f-указателя, а затем усекает, чтобы удалить все после последней записи.

Ответ 3

На мой взгляд, лучший и быстрый вариант, вместо сохранения всего в списке и повторного открытия файла для его записи, - это перезаписать файл в другом месте.

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)

Вот и все! В одном цикле и только в одном вы можете сделать то же самое. Это будет намного быстрее.

Ответ 4

Это "форк" из ответа @Lother (следует считать правильным ответом).

Для файла, подобного этому:

$ cat file.txt 
1: october rust
2: november rain
3: december snow

Этот код:

#!/usr/bin/python3.4

with open("file.txt","r+") as f:
new_f = f.readlines()
f.seek(0)
for line in new_f:
if "snow" not in line:
f.write(line)
f.truncate()

Улучшения:


  • with open, который исключает использование f.close()

  • более понятно, if/else как определить, отсутствует ли строка в текущей строке

2023-06-19 12:07 python file