覆盖以前在Python中打印的行

时间:2019-09-15 20:25:09

标签: python-3.x terminal command-line-interface

我正在编写一个程序包,它将允许用户选择一个选项。 即。

print("What is your favourite singer?")
print("Sia")
print("> Rachel Platten")
print("Parade Of Lights")

在这种情况下,“ Rachel Platten”被选为歌手,但是当用户按下“向上”键时,我要重写stdout中的文本以将Sia显示为选定的歌手。

我该怎么做?

谢谢

2 个答案:

答案 0 :(得分:1)

因此,我找到了解决此问题的方法。 要将x先前写的行刷新/擦除到stdout:

ERASE_LINE = "\x1b[2K"

for i in range(1, x):
    print(f"\x1b[{i}A{ERASE_LINE}")

答案 1 :(得分:0)

这应该在python3中起作用:

import time

for x in range(25):
    print(f'\r This is loop: {x}', end='')
    time.sleep(0.5)

f字符串中的\r在显示新打印内容之前清除最后一行,我不确定end=''的作用,但是没有它,它将无法工作。