использование Python для удаления определенной строки в файле - PullRequest
122 голосов
/ 17 января 2011

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

Ответы [ 15 ]

1 голос
/ 17 января 2011

В общем, вы не можете; Вы должны написать весь файл снова (по крайней мере, с момента изменения до конца).

В некоторых конкретных случаях вы можете добиться большего успеха, чем это -

если все ваши элементы данных имеют одинаковую длину и не в определенном порядке, и вы знаете смещение того, от которого вы хотите избавиться, вы можете скопировать последний элемент поверх того, который нужно удалить, и обрезать файл перед последний пункт;

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

Вероятно, это излишне для коротких документов (что-нибудь до 100 КБ?).

0 голосов
/ 06 мая 2019

Мне нравится этот метод с использованием fileinput и метода 'inplace':

import fileinput
for line in fileinput.input(fname, inplace =1):
    line = line.strip()
    if not 'UnwantedWord' in line:
        print(line)

Он немного менее многословен, чем другие ответы, и достаточно быстр для

0 голосов
/ 09 октября 2018

вот еще один способ удалить / некоторые строки из файла:

src_file = zzzz.txt
f = open(src_file, "r")
contents = f.readlines()
f.close()

contents.pop(idx) # remove the line item from list, by line number, starts from 0

f = open(src_file, "w")
contents = "".join(contents)
f.write(contents)
f.close()
0 голосов
/ 19 февраля 2017

Сохраните строки файла в списке, затем удалите из списка строку, которую хотите удалить, и запишите оставшиеся строки в новый файл

with open("file_name.txt", "r") as f:
    lines = f.readlines() 
    lines.remove("Line you want to delete\n")
    with open("new_file.txt", "w") as new_f:
        for line in lines:        
            new_f.write(line)
0 голосов
/ 17 января 2011

Возьмите содержимое файла, разделите его по новой строке в кортеж.Затем получите доступ к номеру строки вашего кортежа, присоедините его к кортежу результата и перезапишите файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...