如何在没有换行的情况下在 Python 2.7 中打印而无需缓冲

Wil*_*ill 2 python string python-2.7 output

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

这并不理想,就像我打印一行一样,例如:

print("We're doing something...",end='')
Run Code Online (Sandbox Code Playgroud)

然后使用任何其他代码,然后是一行,例如:

print("we finished doing that thing.")
Run Code Online (Sandbox Code Playgroud)

该行被打印,但它是一次打印的,这意味着它被缓冲,直到它得到包含换行符的打印。我更希望能够将第一个打印字符串输出到控制台,执行其他代码,然后放入带有换行符的部分。我无论如何都找不到在 Python 2.7 中使用打印来执行此操作的方法。也许有人可以给我指出一种功能性的方法来做到这一点?谢谢。

对于那些建议环境缓冲修复它的人来说,它没有。它会影响文件输出和其他一些与它无关的杂项。下面有一个总体上是实用的答案。

jsb*_*eno 7

在文件的开头包含以下内容:

from __future__ import print_function
Run Code Online (Sandbox Code Playgroud)

然后你可以使用endflush命名参数,就像你在 Python 3 上一样。它看到你缺少flush参数:

print("We're doing something...",end='', flush=True)
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因你不能或不想这样做,你应该print用一个逗号结束你的遗留声明。如果您需要打印部分行,那么您必须sys.stdout.flush()在打印后立即手动调用:

 print "We're doing something...",
 sys.stdout.flush()
 ...
 print "Done!"
Run Code Online (Sandbox Code Playgroud)

  • 事实证明,打印函数在 2.7 中没有以这种方式运行所需的东西,所以这是有效的:[wrap python 2.7 打印函数](/sf/ask/1959401041/ 3-4-version-of-print-from-future) (2认同)