如何在不使用换行符的情况下使用Python 2.7打印而不进行缓冲

时间:2018-06-20 17:32:36

标签: python string python-2.7 output

在Python 2.7中,我需要在不使用换行符的情况下将文本打印到控制台,因此以后可以在以后的代码中继续在同一行上编写更多文本。我当前的实现涉及从将来的库中导入Python 3打印功能,并使用end =''。

这不太理想,就像我打印一行一样,

print("We're doing something...",end='')

然后再加上其他任何代码,然后添加一行,如:

print("we finished doing that thing.")

该行被打印,但是所有行都被立即打印,这意味着它将被缓冲,直到获得带有换行符的打印为止。我更希望能够将第一个打印字符串输出到控制台,执行其他代码,然后将其与换行符一起放入。无论如何,我找不到在Python 2.7中使用print来做到这一点。也许有人可以指出我的实用方法?谢谢。

对于那些建议环境缓冲修复它的人来说,并非如此。它会影响文件输出以及与此无关的其他杂项。以下是一个可以整体起作用的答案。

1 个答案:

答案 0 :(得分:4)

在文件开头添加此内容:

from __future__ import print_function

然后,就可以像使用Python 3一样使用endflush命名参数了。看起来您缺少了flush参数:

print("We're doing something...",end='', flush=True)

如果由于某种原因您不能这样做或不想这样做,则应使用一个逗号来结束旧式print语句。如果需要打印部分行,则必须在打印后立即手动调用sys.stdout.flush()

 print "We're doing something...",
 sys.stdout.flush()
 ...
 print "Done!"