reading from sys.stdin

7stud bbxx789_05ss at yahoo.com
Sat Apr 14 15:06:14 EDT 2007


On Apr 14, 7:43 am, Steve Holden <s... at holdenweb.com> wrote:
> 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

Does iterating over stdin work the same way?  If one were to type in
enough lines to fill the buffer would iteration begin before entering
EOF with Ctrl+D?




More information about the Python-list mailing list