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

Мне нужно найти 4 строчку в txt документе и удалить ее, при этом не оставив пустых строк. Как это сделать? Прошу не писать сложный код, мне просто надо удалить определенную строку из файла.


Ответы (3 шт):

Автор решения: CrazyElf
  • открыть файл на чтение
  • прочитать строки в список через readlines
  • закрыть файл
  • удалить не нужную строку из списка
  • открыть файл на запись
  • записать список строк в файл через writelines
  • закрыть файл
→ Ссылка
Автор решения: elderberry17

Попробуйте такой скрипт:

with open('input.txt', 'r+') as f_in:
    lines = f_in.readlines()
    f_in.seek(0)
    f_in.writelines(line for ind, line in enumerate(lines) if line.strip() and ind != 3)
    f_in.truncate()

Вместо input.txt поставьте путь к вашему файлу (если он у вас в той же директории, достаточно названия)

→ Ссылка
Автор решения: eri

Удаление строки можно сделать не вычитывая фай в память. Но перезаписать его всё равно придется полностью:

with open('/tmp/test','r') as fr, open('/tmp/test','r+') as fw:
    fw.writelines(line for i,line in enumerate(fr) if i!=3)
    fw.truncate()

Можно не переписывать начало, промотаем файл к концу строчки перед ненужной:

with open('/tmp/test','r') as fr, open('/tmp/test','r+') as fw:
    for i,line in enumerate(fr):
        if i==(3-1):
            fw.seek(fr.tell())
        elif i>3:
            fw.write(line)
    fw.truncate()
→ Ссылка