How can I flush the output of the print function (unbuffer python output)?
How can I flush the output of the print function (unbuffer python output)?
In Python 3, print
can take an optional flush
argument:
print(Hello, World!, flush=True)
In Python 2 youll have to do
import sys
sys.stdout.flush()
after calling print
. By default, print
prints to sys.stdout
(see the documentation for more about file objects).
Running python -h
, I see a command line option:
-u : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x
see man page for details on internal buffering relating to -u
Here is the relevant documentation.
How can I flush the output of the print function (unbuffer python output)?
Since Python 3.3, you can force the normal print()
function to flush without the need to use sys.stdout.flush()
; just set the flush keyword argument to true. From the documentation:
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 arguments.
All non-keyword arguments are converted to strings like str() does and written to the stream, separated by sep and followed by end. Both sep and end must be strings; they can also be None, which means to use the default values. If no objects are given, print() will just write end.
The file argument must be an object with a write(string) method; if it is not present or None, 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.