Метод readlines не возвращает итератор в Python 3, он возвращает список
Help on built-in function readlines:
readlines(...)
Return a list of lines from the stream.
Чтобы проверить, просто вызовите его из интерактивного сеанса - он вернет список, а не итератор:
>>> type(f.readlines())
<class 'list'>
Погружение в Python в этом случае представляется неправильным.
xreadlines
устарела , начиная с Python 2.3 , когда файловые объекты стали их объектамисобственные итераторы.Способ получить ту же эффективность, что и xreadlines
, вместо использования
for line in f.xreadlines():
, вы должны использовать просто
for line in f:
Это дает вам итератор, который выхочу, и помогает объяснить, почему readlines
не нужно было менять свое поведение в Python 3 - он все еще может возвращать полный список, с идиомой line in f
, обеспечивающей итеративный подход, и давно устаревший xreadlines
имеетбыл полностью удален.