python загрузка содержимого файла без менеджера контекста - PullRequest
0 голосов
/ 12 марта 2020

Я делаю это:

f = open('foo.txt', 'rb')
ii = (x for x in f.readlines())
f.close()

print(next(ii))

Я вижу проблему в моей реализации этого кода с использованием итератора и вызова next после закрытия файла.

Не является ли эта реализация проблематичной c из-за факта использования итератора и выполнения на итераторе после закрытия файла независимо от того, не используется ли менеджер контекста?

1 Ответ

1 голос
/ 12 марта 2020

Нет, это не так, потому что f.readlines() оценивается при создании выражения генератора:

f = open('foo.txt', 'rb')
ii = (x for x in f.readlines())
print(f.tell()) # nonzero for non-empty file (shows how far we read)
f.close()

Обратите внимание, что, хотя мы никогда не вызываем next, содержимое файла уже загружено.

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