如何在 Python 中的多个终端行上重写
How to rewrite on several terminal lines in Python
我正在尝试从 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
然后一秒钟后(睡眠之后)我希望这 2 个数字像这样“被新输出替换”:
bla@bla:/tmp$ python3 test.py
2
4
等等...
我测试了什么?
- 我试过将
os.system("clear")
放在我的 for 循环的开头,但它很丑陋,而且它不符合我的要求...
- 我尝试按照建议将
end '\r'
放在印刷品的末尾 here
- 我尝试用
os.system()
启动 this commands 但没有成功
你有什么解决办法吗?感谢您的帮助。
这取决于您使用的终端仿真器,但您可能希望输出 ANSI 'cursor up' 代码,这会将光标向上移动,为下一次迭代做好准备。您想要的代码是“ESCAPE [ A”
import time
for n in range(1, 10):
print(n)
print(n*2)
time.sleep(1)
print("3[A3[A", end="")
ESCAPE 是字符 27,即八进制的 033。
注意 end="" 停止光标再次向下移动...
我正在尝试从 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
然后一秒钟后(睡眠之后)我希望这 2 个数字像这样“被新输出替换”:
bla@bla:/tmp$ python3 test.py
2
4
等等...
我测试了什么?
- 我试过将
os.system("clear")
放在我的 for 循环的开头,但它很丑陋,而且它不符合我的要求... - 我尝试按照建议将
end '\r'
放在印刷品的末尾 here - 我尝试用
os.system()
启动 this commands 但没有成功
你有什么解决办法吗?感谢您的帮助。
这取决于您使用的终端仿真器,但您可能希望输出 ANSI 'cursor up' 代码,这会将光标向上移动,为下一次迭代做好准备。您想要的代码是“ESCAPE [ A”
import time
for n in range(1, 10):
print(n)
print(n*2)
time.sleep(1)
print("3[A3[A", end="")
ESCAPE 是字符 27,即八进制的 033。 注意 end="" 停止光标再次向下移动...