[Python-ideas] Is there a reason why file.readlines() doesn't/can't return an iterator?

Peter Otten __peter__ at web.de
Wed Nov 30 14:59:30 CET 2011


Giampaolo Rodolà wrote:

> This is problably too late and I'm probably missing something but
> given amount of generators/iterators introduced in python 3.X
> (http://docs.python.org/release/3.0.1/whatsnew/3.0.html#views-and-
iterators-instead-of-lists)
> file.readlines() seems a good case where an iterator can be more
> appropriate than a list.
> I realized it while writing this recipe:
> http://code.activestate.com/recipes/577968-log-watcher-tail-f-log/
> In this specific case, having readlines() yield a single line at a
> time would save a lot of memory.
> Maybe we can introduce a new parameter to do this?

You already have an iterator -- the file itself. Why would you need another 
one?

My observation on the Tutor mailing list is that there are no valid uses of 
readlines(). It's just easier to discover the readlines() method than to 
find out that you can iterate over the file directly.

So my counter-proposal is to remove the readlines method but to leave the 
corresponding entry in the documentation with a a description of the "right 
way" to iterate over the lines of a file. Backwards compatibility be damned 
;)




More information about the Python-ideas mailing list