Jeff Epler wrote:
The iterator for files is a little bit like this generator function:
    def lines(f):
        while 1:
            chunk = f.readlines(sizehint)
            for line in chunk: yield line
Inside file.readlines, the read from the tty will block until sizehint
bytes have been read or EOF is seen.

I'm not the OP, but thanks for putting 2 and 2 together for me anyway. :) I just tested it on my Windows XP box, and discovered that
for line in sys.stdin:
...
actually does read a line at a time, as long as the lines are at least 8192 characters long. ;)


    def lines(f):  # untested
        """lines(f)
If f is a terminal, then return an iterator that gives a value after
each line is entered.  Otherwise, return the efficient iterator for
files."""
        if hasattr(f, "fileno") and isatty(f.fileno()):
            return iter(f.readline, '')
        return iter(f)

Slick. Thanks!

STeVe
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to