reading from sys.stdin

Michael Hoffman cam.ac.uk at mh391.invalid
Fri Apr 13 11:13:58 CEST 2007


7stud wrote:

> I assume all input is buffered by default, so I'm not sure how it
> explains things to say that input from sys.stdin is buffered.

The difference with sys.stdin is that it has indeterminate length until 
you signal EOF. I believe you'd get the same problem reading from, say, 
a named pipe.

>> I typed many lines, but lst contains only one item, as expected. Same as
>> your regular file example: the file contains many lines, but only the
>> first goes into the list.
> 
> Interesting example--not as I expected!  But there is a difference in
> the two examples isn't there?  When you iterate over a file, the whole
> file isn't put into an internal buffer first, is it?

It is if the file is smaller than the buffer size.

>> This should be f = iter(raw_input,"") and this will end in a EOFError
>> and stop on blank line. So you need a wrapper
> 
> Why a wrapper?

Because without a wrapper you'll get EOFError, while the file iterator 
would ordinarily give you StopIteration.
-- 
Michael Hoffman



More information about the Python-list mailing list