| \section{\module{xreadlines} --- | 
 |          Efficient iteration over a file} | 
 |  | 
 | \declaremodule{extension}{xreadlines} | 
 | \modulesynopsis{Efficient iteration over the lines of a file.} | 
 |  | 
 | \versionadded{2.1} | 
 |  | 
 | \deprecated{2.3}{Use \code{for line in file} instead.} | 
 |  | 
 | This module defines a new object type which can efficiently iterate | 
 | over the lines of a file.  An xreadlines object is a sequence type | 
 | which implements simple in-order indexing beginning at \code{0}, as | 
 | required by \keyword{for} statement or the | 
 | \function{filter()} function. | 
 |  | 
 | Thus, the code | 
 |  | 
 | \begin{verbatim} | 
 | import xreadlines, sys | 
 |  | 
 | for line in xreadlines.xreadlines(sys.stdin): | 
 |     pass | 
 | \end{verbatim} | 
 |  | 
 | has approximately the same speed and memory consumption as | 
 |  | 
 | \begin{verbatim} | 
 | while 1: | 
 |     lines = sys.stdin.readlines(8*1024) | 
 |     if not lines: break | 
 |     for line in lines: | 
 |         pass | 
 | \end{verbatim} | 
 |  | 
 | except the clarity of the \keyword{for} statement is retained in the | 
 | former case. | 
 |  | 
 | \begin{funcdesc}{xreadlines}{fileobj} | 
 |   Return a new xreadlines object which will iterate over the contents | 
 |   of \var{fileobj}.  \var{fileobj} must have a \method{readlines()} | 
 |   method that supports the \var{sizehint} parameter.  \note{Because | 
 |   the \method{readlines()} method buffers data, this effectively | 
 |   ignores the effects of setting the file object as unbuffered.} | 
 | \end{funcdesc} | 
 |  | 
 | An xreadlines object \var{s} supports the following sequence | 
 | operation: | 
 |  | 
 | \begin{tableii}{c|l}{code}{Operation}{Result} | 
 |  \lineii{\var{s}[\var{i}]}{\var{i}'th line of \var{s}} | 
 | \end{tableii} | 
 |  | 
 | If successive values of \var{i} are not sequential starting from | 
 | \code{0}, this code will raise \exception{RuntimeError}. | 
 |  | 
 | After the last line of the file is read, this code will raise an | 
 | \exception{IndexError}. |