Почему файл не читается без функции read(), но при этом когда раскладываешь через цикл, то всё работает?

Почему файл не читается без функции read() в данном примере?

with open('pi_digits.txt') as text_file:
print(text_file.read())

При этом в этом случае функция не требуется и всё работает.

with open('pi_digits.txt') as text_file:
for list_file in text_file:
    print(list_file)

Помогите пожалуйста разобраться. Не пойму принципа работы python в данном случае, спасибо.

Пример файла: 3.1415926535 8979323846 2643383279


Ответы (1 шт):

Автор решения: passant

Во-первых, наверное потому что вы забыли что такое отступы и зачем они используются в Python

with open('my_first_file.txt') as text_file:
    print(text_file.read())

Все работает. Результат:

Наша Таня громко плачет,
уронила в речку мячик,
тише, Танечка, не плачь,
не утонет в речке мяч

Во-вторых, а как без функции read - или функций/методов ее заменяющих - вы собрались читать? На всякий случай - text_file - это не ваш файл, а специальный объект, который дает вам возможность работы с файлом. Вот вы и используете такие методы - в первом случае read(), во втором - это делает за вас интерпретатор, который умеет правильно интерпретировать работу с итерируемым объектом в конструкции in text_file

→ Ссылка