如何输出到同一行覆盖上一行?

新手上路,请多包涵

如何通过覆盖先前打印的 Timing(countdown) 值在同一行上打印输出?

如下所示,每一秒后,计时值打印在下一行。

 13:35:01

13:35:00

13:34:59

13:34:58

13:34:57

13:34:56

我希望将计时值打印在清除前一行的同一行上。

原文由 Prashant sharma 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 902
1 个回答

您可以 使用“返回” \r 返回到行首。在 Python 2.x 中,您必须使用 sys.stdout.writesys.stdout.flush 而不是 print

 import time, sys
while True:
    sys.stdout.write("\r" + time.ctime())
    sys.stdout.flush()
    time.sleep(1)

在 Python 3.3 中,您可以使用 print 函数,使用 endflush 参数:

     print(time.ctime(), end="\r", flush=True)

但是请注意,这种方式只能替换屏幕上的最后一行。如果您想在更复杂的仅限控制台的 UI 中使用“实时”时钟,您应该查看 curses

 import time, curses
scr = curses.initscr()
scr.addstr(0, 0, "Current Time:")
scr.addstr(2, 0, "Hello World!")
while True:
    scr.addstr(0, 20, time.ctime())
    scr.refresh()
    time.sleep(1)
curses.endwin()

原文由 tobias_k 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题