Я пытаюсь удалить строку из текстового файла после ее открытия и без сохранения в какой-либо переменной списка с помощью f.readlines () или чего-либо подобного.У меня нет возможности открыть файл и сохранить его содержимое в переменной, внести некоторые изменения и записать их в другой файл или выполнить любые операции, требующие открытия файла и повторного сохранения их в переменной списка и внесения некоторых изменений.и сохранить их обратно в файл.Файл постоянно добавляется какой-либо другой программой, поэтому я не могу делать ничего подобного.
Я использую f.seek () для сброса указателя на начало файла и использую f.readline (), а также f.tell (), чтобы узнать длину первой строки.После этого я пытаюсь заменить каждый символ пробелом, используя цикл while.
pos=0
eol = 0
ll=0
with open('file1.txt','rb+') as f:
f.seek(pos,1) #position at the beginning of the file
print(f.readline()) #reading the first line
pos = f.tell() #storing the length of first line
#the while loop will run from 0 to pos and replace every character with blank space
while eol != pos:
with open('file1.txt','rb+') as f:
f.seek(eol,1)
f.write(b' ')
eol += 1 #incrementing the eol variable to move the file pointer to next character
код работает нормально, но с одной проблемой, которую я не могу выяснить, например, если это оригинальный файл
file1.txt
this is line 1
this is line 2
this is line 3
после запуска программы мой вывод будет
this is line 2
this is line 3
, первая строка удаляется, но перед 2-й строкой есть куча пробелов.Может быть, мне здесь не хватает простой логики.Любая помощь будет оценена.Спасибо
Обновление:
Если я правильно понял, я изменил код и сделал его таким, и вместо b '' я ставлю '\r 'как возврат carraige, что привело к этому:
код:
while eol != pos-1:
with open('file1.txt','rb+') as f:
f.seek(eol,0)
f.write(b'\r')
eol += 1
результат:
original :
this is line 1
this is line 2
this is line 3
после выполнения
this is line 2
this is line 3
вы видите, что 1-я строка удалена, но за ней следует '\ r'