【问题标题】:How to rewrite on several terminal lines in Python [duplicate]如何在Python中重写多个终端行[重复]
【发布时间】:2021-12-26 19:32:18
【问题描述】:

我正在尝试使用 Python3 脚本在我的终端上重写两行。
让我们举个简单的例子:

import time

for n in range(1, 10):
    print(n)
    print(n*2)
    time.sleep(1)

当我启动我的脚本时,我想要这个输出:

bla@bla:/tmp$ python3 test.py
1
2

然后一秒钟后(在睡眠之后)我希望这两个数字被“替换为新输出”,如下所示:

bla@bla:/tmp$ python3 test.py
2
4

等等……

我测试了什么?

  • 我尝试将 os.system("clear") 放在我的 for 循环的开头,但它非常难看,而且不能满足我的要求...
  • 我已尝试按照here 的建议将end '\r' 放在打印的末尾
  • 我尝试使用os.system() 启动this commands,但没有成功

你有什么解决办法吗?感谢您的帮助。

【问题讨论】:

  • @mkrieger1it 也可以,但Thickycat 的解决方案要简单得多。感谢您的回答,不过我学到了一些新东西!

标签: python-3.x terminal


【解决方案1】:

这取决于您使用的终端仿真器,但您可能希望输出 ANSI 'cursor up' 代码,这会将光标向上移动以准备下一次迭代。你想要的代码是“ESCAPE [A”

import time

for n in range(1, 10):
    print(n)
    print(n*2)
    time.sleep(1)
    print("\033[A\033[A", end="")

ESCAPE 是字符 27,即八进制的 033。 注意 end="" 停止光标再次向下移动...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-30
    • 2016-10-26
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    相关资源
    最近更新 更多