xreadlines (was Re: while true: !!!)

Neil Schemenauer nas at arctrix.com
Wed Dec 13 13:43:16 EST 2000


On Wed, Dec 13, 2000 at 11:57:45PM +0000, Jeff Epler wrote:
> In Python, there is an existing precedent for creating a
> special 'iteratable' object where the entire object would not
> fit in memory, the 'xrange' function and its associated object
> type.
> 
> I take this cue to suggest the idea of an 'xreadlines' object.

Its been done before (by me and by other people).  The best
"solution" I came up with was "repeatmodule":

    http://arctrix.com/nas/python/repeatmodule-1.0.tar.gz

Here is an example of its use:

    import sys
    from repeat import repeat
    for line in repeat(sys.stdin.readline):
            ...

and a little documentation on the function:

    repeat.repeat(<function>, [<until>]) -> RepeatObject

    RepeatObjects are sequences that only support the method
    __getitem__.  <function> is called on __getitem__.  If
    <until> is not specified a false value from <function> raises
    an IndexError.  If <until> is specified, if the value is
    equal to <until> then IndexError is raised.

I never did end up using it.  Usually speed doesn't matter that
much.  If would be interesting to see how quickly Python can chew
up a file with my repeat hack and AMK's recent glibc getline
optimization.  Another day perhaps.

  Neil




More information about the Python-list mailing list