Line-by-line processing when stdin is not a tty

Tim Harig usernet at
Wed Aug 11 10:38:48 CEST 2010

On 2010-08-11, RG <rNOSPAMon at> wrote:
> When stdin is not a tty, Python seems to buffer all the input through 
> EOF before processing any of it:
> [ron at mickey:~]$ cat | python
> print 123
> print 456 <hit ctrl-D here>
> 123
> 456
> Is there a way to get Python to process input line-by-line the way it 
> does when stdin is a TTY even when stdin is not a TTY?

It would be much better to know the overall purpose of what you are trying
to achieve.  There are may be better ways (ie, sockets) depending what you
are trying to do.  Knowing your target platform would also be helpful.

For the python interpeter itself, you can can get interactive behavior by
invoking it with the -i option.

If you want to handle stdin a single line at a time from inside of your
program, you can access it using sys.stdin.readline().

More information about the Python-list mailing list