Использование linecache в циклах for приводит к странной ошибке - PullRequest
0 голосов
/ 09 июля 2020

Итак, я работаю над алгоритмом сортировки, который включает чтение информации в разных текстовых файлах и запись «имен» в правильный текстовый файл.

Идея состоит в том, что есть два числовых ввода и одно имя, которое вы должны войти в алгоритм, а затем, если эти два числовых ввода совпадают с числами в текстовом файле, он отсортирует имя в этот текстовый файл.

Существует главный текстовый файл со всеми имена текстовых файлов, которые я go просматриваю в for l oop как средство для сортировки каждого текстового файла один за другим в алгоритме.

Проблема, с которой я столкнулся, связана с этим блоком кода.

Refersearch = open("Allresearchers.txt", "r")
for f in Refersearch:
    Docucheck = linecache.getline(f + ".txt", 1)
    print("Docucheck of" + f + "is")
    print(Docucheck)
    Doculine = Docucheck.strip()
    if Docucheck.isdigit():
        dline = int(Docucheck)
        print("Dline of " + f + "is")
        print(dline)

Я знаю, что нет ничего плохого в главном файле или файле "Allresearchers", потому что, когда я просто печатаю f отдельно, все имена текстовых файлов появляются регулярно. Однако, когда я пытаюсь просто взять первую строку каждого текстового файла, превратить ее в целое число и распечатать, возникает странная ошибка.

Docucheck ofjoe
is

Docucheck ofdon
is

Docucheck ofkanye
is

Docucheck ofErin
is

Docucheck ofVictoris
1

Как видите, по какой-то причине он игнорирует целое число во всех текстовых файлах, кроме последнего. Даже тогда, для последнего, он не преобразует его в dline, который должен быть целым числом. Я не совсем уверен, что происходит, и я не думаю, что ошибка связана с самими текстовыми файлами, потому что буквально два числа в каждом, как можно увидеть здесь, и здесь

Вот текстовый файл «победитель», тот, который программа считала частично правильно, для справки.

...