在IPython控制台中的同一位置打印

时间:2017-10-20 07:36:15

标签: python printing console ipython

之前已经询问过(例如ab等),但我无法在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控制台中获得的内容:

Text does not print on the same line

我在PC和Spyder上使用Anaconda发行版,使用Python 3.该代码适用于Anaconda终端,但我需要打印出一些图像,所以我需要IPython。我也尝试使用end=""或在print()语句后添加逗号(即使这是用于Python 2),但无济于事。

1 个答案:

答案 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;。