在python 3中,我们可以使用以下脚本轻松地在同一行上打印。我用这个来理解我的循环的进度(剩下多少时间)。但是,在jupyter中它不起作用(它在不同的行上打印)
import time
for f in range(10):
print(f, end='\r', flush=True)
time.sleep(10)
它不能打开%pprint的漂亮打印,我尝试使用sys.stdout.write(),但我也有这个问题。
答案 0 :(得分:19)
稍后找到解决方案(注意它在pycharm jupyter中不起作用,但仅在浏览器实现中)。对我来说,SquareImageView
工作正常,但建议使用here print
,但它会在字符串周围打印撇号。
display
编辑:只是想补充一点,TQDM通常也是实现这一目标的好工具。它显示进度条,允许您在其下面写输出或不同的每个条的描述。另请参阅this post。
from IPython.display import clear_output, display
for f in range(10):
clear_output(wait=True)
print(f) # use display(f) if you encounter performance issues
time.sleep(10)
笔记本电脑的颜色很好
import tqdm
values = range(3)
with tqdm(total=len(values), file=sys.stdout) as pbar:
for i in values:
pbar.set_description('processed: %d' % (1 + i))
pbar.update(1)
sleep(1)
答案 1 :(得分:9)
“\ r \ n”部分会覆盖该行,如果您将该行附加到该行。您的版本print(f, end='', flush=False)
可以正常工作,但是我已经在Python 3下阅读了您需要使用sys.stdout.write(),最好是添加flush命令。
import sys
import time
for f in range(10):
#delete "\r" to append instead of overwrite
sys.stdout.write("\r" + str(f))
sys.stdout.flush()
time.sleep(10)
某些系统上需要stdout.flush,否则您将无法获得任何输出
答案 2 :(得分:5)
以\r
为前缀,并添加一个自变量end=""
以进行打印,
print("\rThis will be printed on the same line", end="")
这在Google Colab的Jupyter笔记本中有效。