reading from sys.stdin

7stud bbxx789_05ss at yahoo.com
Sun Apr 15 15:51:12 EDT 2007


On Apr 15, 10:59 am, Steve Holden <s... at holdenweb.com> wrote:
> 7stud wrote:
> > 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.
>
> > 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?
>
> Why don't you try it and tell me? That's what the interactive
> interpreter is for.
>
> 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

I just typed in 700 lines of text, and the iteration hasn't begun
yet.  Should I keep going?




More information about the Python-list mailing list