4 回答
TA贡献1906条经验 获得超3个赞
import sys sys.stdout.flush()
print
默认情况下打印到sys.stdout
.
参考文献
Python 2
这个
print
陈述sys.stdout
文件对象
Python 3
print()
sys.stdout
文件对象-词汇表
继承io.IOBase.flush()
(sys.stdout
法flush
io.IOBase
)
TA贡献1921条经验 获得超9个赞
从Python3.3开始,您可以强制使用普通的print()
函数不需要使用就可以进行刷新。sys.stdout.flush()
;只需将“刷新”关键字参数设置为true。
打印(*Object,Sep=‘,end=’\n‘,file=sys.stdout,刷新=false)
将对象打印到流文件,然后用SEP分隔,然后再输出End。如果存在,则必须将SEP、End和file作为关键字参数。
所有非关键字参数都被转换为字符串,如str()所做的,并将其写入流中,然后用SEP分隔,后面跟着End。SEP和End都必须是字符串;它们也可以是None,这意味着使用默认值。如果没有给出对象,print()将只写End。
文件参数必须是带有写(字符串)方法的对象;如果它不存在或不存在,则将使用sys.stdout。输出是否缓冲通常由文件决定,但如果FLUSH关键字参数为真,则强制刷新流。
TA贡献1802条经验 获得超5个赞
如何冲洗Python打印输出?
在Python 3中,调用 print(..., flush=True)
(Python2的print函数中不能使用刷新参数,并且没有打印语句的模拟)。 打电话 file.flush()
例如,在输出文件(我们可以包装python 2的打印函数)上, sys.stdout
将此应用于模块中每个带有部分函数的打印函数调用, print = partial(print, flush=True)
应用于模块全局。 将其应用于带有标志的进程( -u
)传递给解释器命令 将此应用于您环境中的每个python进程。 PYTHONUNBUFFERED=TRUE
(并取消设置变量以撤消此操作)。
Python 3.3+
flush=True
print
print('foo', flush=True)
Python 2(或<3.3)
flush
__future__
from __future__ import print_functionimport sysif sys.version_info[:2] < (3, 3): old_print = print def print(*args, **kwargs): flush = kwargs.pop('flush', False) old_print(*args, **kwargs) if flush: file = kwargs.get('file', sys.stdout) # Why might file=None? IDK, but it works for print(i, file=None) file.flush() if file is not None else sys.stdout.flush()
six
file.flush()
import sysprint 'delayed output'sys.stdout.flush()
将一个模块中的默认值更改为 flush=True
import functoolsprint = functools.partial(print, flush=True)
>>> print = functools.partial(print, flush=True)>>> printfunctools.partial(<built-in function print>, flush=True)
>>> print('foo')foo
>>> print('foo', flush=False)foo
print
def foo(): printf = functools.partial(print, flush=True) printf('print stuff like this')
更改进程的默认值
-u
$ python -u script.py
$ python -um package.module
强迫stdin、stdout和stderr完全不缓冲。在重要的系统上,也将stdin、stdout和stderr放在二进制模式中。
注意,在file.readline()和File对象(sys.stdin中的行)中存在内部缓冲,它不受此选项的影响。要解决这个问题,您需要在while 1:循环中使用file.readline()。
更改shell操作环境的默认值
$ export PYTHONUNBUFFERED=TRUE
C:\SET PYTHONUNBUFFERED=TRUE
平底
如果设置为非空字符串,则等于指定-u选项。
增编
flush
>>> from __future__ import print_function>>> help(print)print(...) print(value, ..., sep=' ', end='\n', file=sys.stdout) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline.
添加回答
举报