Почему мы не можем распечатать определенную строку текстового файла с помощью этого метода?

Мы можем использовать файл как список в циклах, и каждая строка текста выглядит как элемент списка. Но мы не можем напечатать определенную строку текстового файла с помощью «print (fhandle [0])». Я новичок, и я не могу понять это. Можешь мне объяснить?

fhandle = open('TestTXT.txt')

for line in fhandle:
    print(line)

print(fhandle[0])

Скриншот терминала: Снимок экрана терминала


person YusufDanis    schedule 24.07.2021    source источник
comment
Потому что он не предназначен для этого. Нет способа узнать, где в файле начинается данная строка, кроме чтения файла до тех пор, пока не будет просмотрено достаточно новых строк. Поскольку это может занять сколь угодно много времени (в зависимости от длины файла и желаемого индекса) для операции индексирования (которая должна быть быстрой и занимать одинаковое количество времени, несмотря ни на что), операция не предоставляется.   -  person Karl Knechtel    schedule 24.07.2021
comment
Ссылка на объект, возвращаемая open(), имеет тип _io.TextIOWrapper, который является итерируемым. Вот как/почему это работает в цикле for. Это не индексируется   -  person Andy Knight    schedule 24.07.2021