我正在使用' \ r'在python 2.7中的打印功能。它在终端中工作正常但不在终结器中工作。
例如:
我正在使用递减计数器,该递减计数器从n递减到0.在终端中,计数值在同一行更新,而在终结符中,计数值在新行上打印。我使用终结器有各种原因,例如它的高级功能,如选项卡分区等。下面是代码快照
import sys
import time
if __name__ == "__main__":
sleep_time_in_sec = 15
time_to_go_back_mns = 10
for remaining in range(sleep_time_in_sec, -1, -1):
sys.stdout.write("\r")
sys.stdout.write(
"{:2d} seconds remaining to read last {:2d} minutes of data and perform prediction .....".format(remaining,
time_to_go_back_mns))
sys.stdout.flush()
time.sleep(1)
有人可以建议修复
答案 0 :(得分:1)
只需将\ r放在write语句的末尾,如下所示:
sys.stdout.write(
"{:2d} seconds remaining to read last {:2d} minutes of data and perform prediction .....\r".format(remaining,
time_to_go_back_mns))
然后新数据将覆盖该行,您可以使用flush()清除该行,然后再次写入该行:
sys.stdout.flush()
确保在终结器端,您的配置文件设置是干净的。请务必查看兼容性选项卡,因为它提到了奇怪的应用程序行为。
注意如果终端尺寸太小,回车将停止运行。它只会返回到最后一行的第一个字符
原始回答
\r
实际上意味着“回车”,而\n
是换行符。
在Linux(Unix)中,您通常使用\n
或\r\n
。
因此,如果您的目标是换行,则应使用\n
代替。
它可能在“终端”(可能是哪一个)中起作用的原因是因为某些终端(特别是gnome的终端)捕获\r
并将其视为\r\n
。
答案 1 :(得分:0)
这篇文章的答案是@Rick van Lieshout。
就我而言,我在同一个窗口中使用了多个标签,因此\ r \ n无效。当我在单独的窗口或具有完全水平宽度的标签中使用它时,它工作正常。