Удалить строку из файла на месте

У меня есть.txt, и я хочу, чтобы скрипт Python что-то с ним делал.

Мой.txt выглядит примерно так:

  • 27b23815-4cbb-dfae-3e6d-38f67ec4266e
  • 81a090bd-8973-bc37-5c7b-dc1a18e8ddee
  • 7e1bf596-88bc-d8fd-9aea-278d5c689eaa
  • 0b365fb0-dea4-53a1-fd27-6cbf9721602c
  • 1c317dcf-73f4-edf5-b6a1-ad663d2b507e
  • 6db8342d-1afb-2777-1a7f-a5daad06d2db

И я хочу удалить первую строку.txt, если в 6-й строке что-то записано, но все без создания нового.txt из старого. Не могу понять суть этого:(

Я знаю, что могу удалить первую строку с помощью:

       lines = file(idpath, "r").readlines()  
       del lines[0]  
       file(idpath,"w").writelines(lines) 

Буду благодарен за любую помощь

2 ответа

Поскольку файловая парадигма представляет собой (байты) массив байтов, вы не можете просто удалить данные изнутри. Вместо этого вы делаете одно из следующих действий:

  • сдвиньте назад все данные после фрагмента, который нужно удалить, чтобы перезаписать его, затем отрегулируйте размер файла
    (старомодно, обычно используется с отображенными в память файлами или когда вы не можете позволить себе другую копию данных)
  • записать все полученные данные в новый файл, а затем переместить его поверх старого
    (типично для пакетной обработки, так как move является атомарным и мгновенным в одной и той же файловой системе, может работать (в зависимости от ОС), даже если файл открыт чем-то другим, и вы можете проверить результаты перед применением изменения)
  • прочитайте все данные, которые нужно сохранить в памяти, затем обрежьте файл до нуля байтов и запишите новые данные
    (типично для текстовых редакторов. Файл не может быть открыт для записи каким-либо другим способом, и в тот момент, когда вы его усекаете, старое содержимое теряется. OTOH, вам не нужны разрешения для создания другого файла и его перезаписи)

Что касается манипуляций со списком, типы RTM Sequence.

Я понял! Теперь, когда я это вижу, это довольно просто

 f = open('file','r')  
 lines = f.readlines()
 if lines[5]: del lines[0]
Другие вопросы по тегам