Issue #7545: improve documentation of the `buffering` argument in io.open().

This commit is contained in:
Antoine Pitrou 2009-12-19 21:01:10 +00:00
parent d86e9d7616
commit e812d29b52
3 changed files with 43 additions and 8 deletions

View File

@ -106,10 +106,20 @@ Module Interface
:class:`unicode` strings, the bytes having been first decoded using a :class:`unicode` strings, the bytes having been first decoded using a
platform-dependent encoding or using the specified *encoding* if given. platform-dependent encoding or using the specified *encoding* if given.
*buffering* is an optional integer used to set the buffering policy. By *buffering* is an optional integer used to set the buffering policy.
default full buffering is on. Pass 0 to switch buffering off (only allowed Pass 0 to switch buffering off (only allowed in binary mode), 1 to select
in binary mode), 1 to set line buffering, and an integer > 1 to indicate the line buffering (only usable in text mode), and an integer > 1 to indicate
size of the buffer. the size of a fixed-size chunk buffer. When no *buffering* argument is
given, the default buffering policy works as follows:
* Binary files are buffered in fixed-size chunks; the size of the buffer
is chosen using a heuristic trying to determine the underlying device's
"block size" and falling back on :attr:`DEFAULT_BUFFER_SIZE`.
On many systems, the buffer will typically be 4096 or 8192 bytes long.
* "Interactive" text files (files for which :meth:`isatty` returns True)
use line buffering. Other text files use the policy described above
for binary files.
*encoding* is the name of the encoding used to decode or encode the file. *encoding* is the name of the encoding used to decode or encode the file.
This should only be used in text mode. The default encoding is platform This should only be used in text mode. The default encoding is platform

View File

@ -92,6 +92,21 @@ def open(file, mode="r", buffering=None,
allowed in binary mode), 1 to set line buffering, and an integer > 1 allowed in binary mode), 1 to set line buffering, and an integer > 1
for full buffering. for full buffering.
buffering is an optional integer used to set the buffering policy.
Pass 0 to switch buffering off (only allowed in binary mode), 1 to select
line buffering (only usable in text mode), and an integer > 1 to indicate
the size of a fixed-size chunk buffer. When no buffering argument is
given, the default buffering policy works as follows:
* Binary files are buffered in fixed-size chunks; the size of the buffer
is chosen using a heuristic trying to determine the underlying device's
"block size" and falling back on `io.DEFAULT_BUFFER_SIZE`.
On many systems, the buffer will typically be 4096 or 8192 bytes long.
* "Interactive" text files (files for which isatty() returns True)
use line buffering. Other text files use the policy described above
for binary files.
encoding is the name of the encoding used to decode or encode the encoding is the name of the encoding used to decode or encode the
file. This should only be used in text mode. The default encoding is file. This should only be used in text mode. The default encoding is
platform dependent, but any encoding supported by Python can be platform dependent, but any encoding supported by Python can be

View File

@ -219,10 +219,20 @@ PyDoc_STRVAR(open_doc,
"returned as strings, the bytes having been first decoded using a\n" "returned as strings, the bytes having been first decoded using a\n"
"platform-dependent encoding or using the specified encoding if given.\n" "platform-dependent encoding or using the specified encoding if given.\n"
"\n" "\n"
"buffering is an optional integer used to set the buffering policy. By\n" "buffering is an optional integer used to set the buffering policy.\n"
"default full buffering is on. Pass 0 to switch buffering off (only\n" "Pass 0 to switch buffering off (only allowed in binary mode), 1 to select\n"
"allowed in binary mode), 1 to set line buffering, and an integer > 1\n" "line buffering (only usable in text mode), and an integer > 1 to indicate\n"
"for full buffering.\n" "the size of a fixed-size chunk buffer. When no buffering argument is\n"
"given, the default buffering policy works as follows:\n"
"\n"
"* Binary files are buffered in fixed-size chunks; the size of the buffer\n"
" is chosen using a heuristic trying to determine the underlying device's\n"
" \"block size\" and falling back on `io.DEFAULT_BUFFER_SIZE`.\n"
" On many systems, the buffer will typically be 4096 or 8192 bytes long.\n"
"\n"
"* \"Interactive\" text files (files for which isatty() returns True)\n"
" use line buffering. Other text files use the policy described above\n"
" for binary files.\n"
"\n" "\n"
"encoding is the name of the encoding used to decode or encode the\n" "encoding is the name of the encoding used to decode or encode the\n"
"file. This should only be used in text mode. The default encoding is\n" "file. This should only be used in text mode. The default encoding is\n"