Python3打印CR和某些文本时,文本不会被擦除

2024-10-01 00:30:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力编写代码,以便不断进步。 当我打印CR时,它只是将光标移到开头,但文本仍然保留。 如下图所示:

print('xxxxx', end='\r')
print('yy')  # I want to print only 'yy'
>> yyxxx

我可以删除文本,而不仅仅是移动光标吗


Tags: to代码文本onlyendcrprintxxxxx
2条回答

如果您使用的终端理解ANSI转义序列(这是最常见的终端),则可以使用以下选项:

print('xxxxx', end='\r')
print('yy\x1b[K')

\x1b[K序列指示终端从光标擦除到行尾

与切普纳的答案类似,但对于不熟悉ANSI control characters的代码读者来说可能更容易理解

CURSOR_UP_ONE = "\x1b[1A"
ERASE_LINE = "\x1b[2K"

print("xxxxx")
print(CURSOR_UP_ONE + ERASE_LINE + "yy")

如果您不想硬编码这些,可以在流行的第三方库colorama中找到它们:

>>> import colorama  # pip install colorama
>>> colorama.ansi.clear_line()
'\x1b[2K'
>>> colorama.ansi.Cursor.UP()
'\x1b[1A'

相关问题 更多 >