Python3 - проблема при удалении строки из текстового файла - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь удалить строку из текстового файла после ее открытия и без сохранения в какой-либо переменной списка с помощью 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'

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