From 1895f2b544379476f23a45c0cfdeb6cec1221c96 Mon Sep 17 00:00:00 2001 From: Terry Jan Reedy Date: Wed, 1 Oct 2014 15:37:42 -0400 Subject: [PATCH] Issue 22492: Be explicit that print does not support binary mode files. Original patch by Georg Brandl. --- Doc/library/functions.rst | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst index 2a89ce451e2..f7ae3834f3c 100644 --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -1083,8 +1083,8 @@ are always available. They are listed here in alphabetical order. .. function:: print(*objects, sep=' ', end='\\n', file=sys.stdout, flush=False) - Print *objects* to the stream *file*, separated by *sep* and followed by - *end*. *sep*, *end* and *file*, if present, must be given as keyword + Print *objects* to the text stream *file*, separated by *sep* and followed + by *end*. *sep*, *end* and *file*, if present, must be given as keyword arguments. All non-keyword arguments are converted to strings like :func:`str` does and @@ -1094,9 +1094,12 @@ are always available. They are listed here in alphabetical order. *end*. The *file* argument must be an object with a ``write(string)`` method; if it - is not present or ``None``, :data:`sys.stdout` will be used. Whether output - is buffered is usually determined by *file*, but if the *flush* keyword - argument is true, the stream is forcibly flushed. + is not present or ``None``, :data:`sys.stdout` will be used. Since printed + arguments are converted to text strings, :func:`print` cannot be used with + binary mode file objects. For these, use ``file.write(...)`` instead. + + Whether output is buffered is usually determined by *file*, but if the + *flush* keyword argument is true, the stream is forcibly flushed. .. versionchanged:: 3.3 Added the *flush* keyword argument.