#13510: clarify that f.readlines() is note necessary to iterate over a file. Patch by Dan Riti.

This commit is contained in:
Ezio Melotti 2013-04-15 19:08:31 +03:00
parent 45fe62dc9c
commit ed3cd7e445
3 changed files with 8 additions and 15 deletions

View File

@ -298,6 +298,9 @@ I/O Base Classes
to control the number of lines read: no more lines will be read if the
total size (in bytes/characters) of all lines so far exceeds *hint*.
Note that it's already possible to iterate on file objects using ``for
line in file: ...`` without calling ``file.readlines()``.
.. method:: seek(offset, whence=SEEK_SET)
Change the stream position to the given byte *offset*. *offset* is

View File

@ -300,18 +300,8 @@ containing only a single newline. ::
>>> f.readline()
''
``f.readlines()`` returns a list containing all the lines of data in the file.
If given an optional parameter *sizehint*, it reads that many bytes from the
file and enough more to complete a line, and returns the lines from that. This
is often used to allow efficient reading of a large file by lines, but without
having to load the entire file in memory. Only complete lines will be returned.
::
>>> f.readlines()
['This is the first line of the file.\n', 'Second line of the file\n']
An alternative approach to reading lines is to loop over the file object. This is
memory efficient, fast, and leads to simpler code::
For reading lines from a file, you can loop over the file object. This is memory
efficient, fast, and leads to simple code::
>>> for line in f:
... print(line, end='')
@ -319,9 +309,8 @@ memory efficient, fast, and leads to simpler code::
This is the first line of the file.
Second line of the file
The alternative approach is simpler but does not provide as fine-grained
control. Since the two approaches manage line buffering differently, they
should not be mixed.
If you want to read all the lines of a file in a list you can also use
``list(f)`` or ``f.readlines()``.
``f.write(string)`` writes the contents of *string* to the file, returning
the number of characters written. ::

View File

@ -1003,6 +1003,7 @@ Nicholas Riley
Jean-Claude Rimbault
Vlad Riscutia
Wes Rishel
Dan Riti
Juan M. Bello Rivas
Davide Rizzo
Anthony Roach