Чтение из файла с помощью f.readline () читает больше строк, чем в реальном файле - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь создать функцию сортировки, чтобы упорядочивать слова по длине, поэтому первым шагом является поиск самого длинного слова.

Для этого я создал следующий код, он работает какпредполагалось, но есть ошибка, которая привлекла мое внимание, и я пытаюсь выяснить, что ее вызывает.

После замены слова буфер всегда будет читать следующую строку, как если бы она была пустой, но в конечном итогедойти до следующего слова, но это будет свидетельствовать о том, что чтение было выполнено не в той строке.

def sort():
    f = open("source.txt","r")
    w = open("result.txt","a+")
    word = ''
    og_lines = sum(1 for line in open('source.txt'))
    print("Sorting",og_lines,"words...")
    new_lines = 1
    lenght = 0
    word = f.readline(new_lines)
    new_lines+=1
    buffer=f.readline(new_lines)
    while (buffer != ''):
        if (len(buffer)>len(word)):
            word=buffer
            print("change")
        new_lines+=1
        print(new_lines, "lines read")
        buffer=f.readline(new_lines)
        buffer.rstrip()
    lenght = len(word.rstrip())
    print("Longest word is",word.rstrip(),lenght)

Предполагается прочитать 25 строк, но, поскольку по пути было найдено более длинное слово 4 раза, в конечном итоге оно прочиталонесуществующая строка 29 и все же возвращающая слово из реальной строки 25.

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