之前已经询问过(例如a,b等),但我无法在IPython控制台中使用它。 我只想在同一行上反复打印一些文本,而不是连续文本,而是替换前一个文本。 这是我的代码:
import time
try:
while True:
s = "I want this always on the same line. "
print(s, end="\r", flush=True)
time.sleep(0.5)
except KeyboardInterrupt:
pass
以下是我在IPython控制台中获得的内容:
我在PC和Spyder上使用Anaconda发行版,使用Python 3.该代码适用于Anaconda终端,但我需要打印出一些图像,所以我需要IPython。我也尝试使用end=""
或在print()
语句后添加逗号(即使这是用于Python 2),但无济于事。
答案 0 :(得分:2)
我在使用IPython控制台进行编辑之前写了这个,所以我不确定这是否是一个可以在那里工作的解决方案,但在这里它是:
而不是使用print()命令,而是尝试使用sys.stdout。
这是一个" progressreport"我在我的一个剧本中有:
from sys import stdout
from time import sleep
jobLen = 100
progressReport = 0
while progressReport < jobLen:
progressReport += 1
stdout.write("\r[%s/%s]" % (progressReport, jobLen))
stdout.flush()
sleep(0.1)
stdout.write("\n")
stdout.flush()
睡眠功能只是让你可以看到progresReport变得更大。 &#34; \ r&#34; stdout的一部分是使脚本&#34;替换&#34; previus字符串。在write()函数之后添加flush(),因为有时需要在某些环境中显示输出。
一旦你不想再写那一行,你就可以通过写一个没有&#34; \ r&#34;的空字符串来终止它。或者写一个&#34; \ n&#34;。