【问题标题】: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

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

【问题讨论】:

  • 您可以添加您的预期输出吗?
  • 你的代码为我打印“yy”。

标签: 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'
    

    【讨论】:

      猜你喜欢
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-24
      • 2016-10-08
      • 1970-01-01
      • 2020-08-08
      • 2023-02-13
      相关资源
      最近更新 更多