reading from sys.stdin

Steve Holden steve at holdenweb.com
Sat Apr 14 09:43:25 EDT 2007


7stud wrote:
> On Apr 13, 6:20 am, Michael Hoffman <cam.ac... at mh391.invalid> wrote:
[...]
> 
> But if you hit return on a blank line, there is no error.  In other
> words, will stop on a blank line and not return EOFError.
> 
> Anyway, it seems everyone is saying that when you iterate over a file,
> the whole file is first read into memory.  Therefore iterating over
> sys.stdin is consistent: you have to type Ctrl+D to signal EOF before
> the iteration can start.  Is that about right?
> 
No. The file content is usually buffered, but the buffering doesn't 
necessarily include the whole content of the file.

If you are iterating over the file the correct way to access the next 
line is to call the file's  .next() method, as I indicated before.

If you are reading lines the appropriate way is to use readline().

And, as you have already seen an error message telling you, mixing the 
two types is unlikely to give you usable results.

regards
  Steve
-- 
Steve Holden       +44 150 684 7255  +1 800 494 3119
Holden Web LLC/Ltd          http://www.holdenweb.com
Skype: holdenweb     http://del.icio.us/steve.holden
Recent Ramblings       http://holdenweb.blogspot.com




More information about the Python-list mailing list