【问题标题】:Python3 When printing CR and some text, the text is not erasedPython3 打印CR和一些文本时,文本没有被擦除
【发布时间】:2020-03-25 09:17:46
【问题描述】:
我正在尝试编写代码以取得进展。
当我打印 CR 时,它只是将光标移到开头,但文本仍然存在。
如下:
print('xxxxx', end='\r')
print('yy') # I want to print only 'yy'
>> yyxxx
我可以删除文本,而不仅仅是移动光标吗?
【问题讨论】:
标签:
python
python-3.x
printing
progress
【解决方案1】:
如果您使用的终端可以理解 ANSI 转义序列(这是最常见的终端),您可以使用以下命令:
print('xxxxx', end='\r')
print('yy\x1b[K')
\x1b[K 序列指示终端从光标处擦除到行尾。
【解决方案2】:
类似于 chepner 的回答,但对于不熟悉 ANSI control characters 的代码读者来说可能更容易理解
CURSOR_UP_ONE = "\x1b[1A"
ERASE_LINE = "\x1b[2K"
print("xxxxx")
print(CURSOR_UP_ONE + ERASE_LINE + "yy")
如果您不喜欢对这些进行硬编码,可以在流行的 3rd 方库 colorama 中找到它们:
>>> import colorama # pip install colorama
>>> colorama.ansi.clear_line()
'\x1b[2K'
>>> colorama.ansi.Cursor.UP()
'\x1b[1A'