From ed3cd7e445e7be413d1b454471454f7ff9f21f1f Mon Sep 17 00:00:00 2001 From: Ezio Melotti Date: Mon, 15 Apr 2013 19:08:31 +0300 Subject: [PATCH] #13510: clarify that f.readlines() is note necessary to iterate over a file. Patch by Dan Riti. --- Doc/library/io.rst | 3 +++ Doc/tutorial/inputoutput.rst | 19 ++++--------------- Misc/ACKS | 1 + 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/Doc/library/io.rst b/Doc/library/io.rst index a8d5fe3667b..8f3964f595a 100644 --- a/Doc/library/io.rst +++ b/Doc/library/io.rst @@ -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 diff --git a/Doc/tutorial/inputoutput.rst b/Doc/tutorial/inputoutput.rst index c804e25c8c3..ef22459ddbd 100644 --- a/Doc/tutorial/inputoutput.rst +++ b/Doc/tutorial/inputoutput.rst @@ -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. :: diff --git a/Misc/ACKS b/Misc/ACKS index 56d140e9b54..a7837a4dd8c 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -1003,6 +1003,7 @@ Nicholas Riley Jean-Claude Rimbault Vlad Riscutia Wes Rishel +Dan Riti Juan M. Bello Rivas Davide Rizzo Anthony Roach