如何在Windows命令行中覆盖/打印在当前行?

31
在Unix系统中,我可以使用\r(回车)或\b (退格)来覆盖当前行(在shell中打印已经可见的文本)。
我能否从Python脚本在Windows命令行中实现相同的效果?
我尝试过curses模块,但它在Windows上似乎不可用。

关于Python下载进度指示器的问题,或许会对你有所帮助。 - cschol
这个回答解决了你的问题吗?动态地在一行中打印 - Elikill58
11个回答

1

感谢各位提供的有用答案。我需要这些信息 :)

我发现nosklo的回答特别有用,但我想要一个完全包含在函数中的解决方案,通过将所需输出作为参数传递。另外,我并不需要计时器,因为我希望在特定事件之后进行打印。

以下是对我有用的方法,希望对其他人也有帮助:

import sys

def replace_cmd_line(output):
    """Replace the last command line output with the given output."""
    sys.stdout.write(output)
    sys.stdout.flush()
    sys.stdout.write('\r')
    sys.stdout.flush()

你只需要在最后使用一次flush()。我不确定sys.stdout.write(output + '\r')比两个方法调用更快(因为需要为字符串分配内存、复制和垃圾回收),所以将它们分开使用可能是可以的。 - Aaron Digulla

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接