In article <mailman.854.1315441399.27778.python-l...@python.org> Cameron Simpson <c...@zip.com.au> wrote: >Facilities like feof() in C and eof in Pascal already lead to lots of >code that runs happily with flat files and behaves badly in interactive >or piped input. It is _so_ easy to adopt a style like: > > while not eof(filehandle): > line = filehandle.nextline() > ...
Minor but important point here: eof() in Pascal is predictive (uses a "crystal ball" to peer into the future to see whether EOF is is about to occur -- which really means, reads ahead, causing that interactivity problem you mentioned), but feof() in C is "post-dictive". The feof(stream) function returns a false value if the stream has not yet encountered an EOF, but your very next attempt to read from it may (or may not) immediately encounter that EOF. Thus, feof() in C is sort of (but not really) useless. (The actual use cases are to distinguish between "EOF" and "error" after a failed read from a stream -- since C lacks exceptions, getc() just returns EOF to indicate "failed to get a character due to end of file or error" -- or in some more obscure cases, such as the nonstandard getw(), to distinguish between a valid -1 value and having encountered an EOF. The companion ferror() function tells you whether an earlier EOF value was due to an error.) -- In-Real-Life: Chris Torek, Wind River Systems Intel require I note that my opinions are not those of WRS or Intel Salt Lake City, UT, USA (40°39.22'N, 111°50.29'W) +1 801 277 2603 email: gmail (figure it out) http://web.torek.net/torek/index.html
-- http://mail.python.org/mailman/listinfo/python-list