我想在串行控制台中覆盖上面一行中的内容。有没有一个角色可以让我升职?
发布于 2012-07-14 00:26:50
大多数终端都能理解ANSI escape codes。此用例的相关代码如下:
"\033[F" -将光标移动到上一个line"\033[A"的开头-将光标上移一行示例(Python):
print("\033[FMy text overwriting the previous line.")发布于 2012-07-14 00:20:09
不,这并不容易,因为你必须使用像curses library这样的东西,特别是如果你想对光标位置有更多的控制,并以编程的方式做更多的事情。
这里有一个Programming with Curses上的Python文档的链接,这个简短的tutorial/example可能也很有趣。
我在docs中找到了这条信息,如果你正在使用Windows的话:
没有人把curses模块移植到Windows上。在Windows平台上,尝试Fredrik Lundh编写的控制台模块。控制台模块提供光标可寻址文本输出,并完全支持鼠标和键盘输入,可从http://effbot.org/zone/console-index.htm获得。
我相信C++有NCurses库,如果你想尝试moving the cursor,链接页面上有一个关于C++的部分。还有NCurses Programming HowTo。
很久以前,我用C很成功地使用了curses库。
更新
我错过了在终端/串行运行的部分,因为ANSI转义序列,特别是对于像您这样的简单任务,将是最简单的,我同意@SvenMarnach解决方案。
发布于 2017-08-26 15:45:58
for i in range(10):
print("Loading" + "." * i)
doSomeTimeConsumingProcessing()
sys.stdout.write("\033[F") # Cursor up one lin在Python中尝试一下,并用所需的任何例程替换doSomeTimeConsumingProcessing(),希望它能有所帮助
https://stackoverflow.com/questions/11474391
复制相似问题