【问题标题】:What can I use to go one line break back in a terminal in Python?我可以用什么在 Python 的终端中换行?
【发布时间】:2013-08-15 07:31:39
【问题描述】:

我可以使用\b 退回一个字符:

>>> print("123#456")
123#456
>>> print("123#\b456")
123456

但如果涉及换行符,则不起作用:

>>> print("123#\n456")
123#
456
>>> print("123#\n\b456")
123#
456

有没有办法去换行?

我问这个是因为我在上一行有进步:

53%

我使用\b 来更新值。但是如果有人打印了一些东西,它就会破坏它。我试图创建一个字符串缓冲区并打印足够的 '\b' 来补偿它,然后将缓冲区打印回来。但是如果有换行就不行了。

【问题讨论】:

  • 通常,您避免打印换行符,或者使用诅咒。在 POSIX 系统上默认的面向行的文本模式下,您不能取回换行符。
  • 您会看到命令行实用程序的 all 进度条的行为相同。使用wget 获取大文件,然后在下载时按回车键。
  • input.replace('\n', '') - 有帮助吗?
  • 您可以尝试使用 '\033[1A' 回退一行(将 1 替换为要跳转的行数。它可能会在某些终端中断。
  • @StianE:让它成为答案,以便我接受。一些解释也会很棒。

标签: python line-breaks


【解决方案1】:

一种可能(有点老套)的解决方案是使用 '\033[1A' 返回一行。将 1 替换为要跳回的行数。您可以使用其他几个转义序列来操作光标。查看完整列表:http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html

- Position the Cursor:
  \033[<L>;<C>H
     Or
  \033[<L>;<C>f
  puts the cursor at line L and column C.
- Move the cursor up N lines:
  \033[<N>A
- Move the cursor down N lines:
  \033[<N>B
- Move the cursor forward N columns:
  \033[<N>C
- Move the cursor backward N columns:
  \033[<N>D

- Clear the screen, move to (0,0):
  \033[2J
- Erase to end of line:
  \033[K

- Save cursor position:
  \033[s
- Restore cursor position:
  \033[u

请注意,这可能不适用于所有终端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 2021-09-04
    • 2022-11-23
    • 2014-10-21
    • 2022-07-14
    相关资源
    最近更新 更多