Метод 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 был удален полностью.
person
Scott Griffiths
schedule
22.08.2010