8

我可以使用以下方法返回一个字符\b

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

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

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

有没有办法去断线?

我问这个是因为我在上一行取得了进展:

53%

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

4

1 回答 1

13

一种可能(有点笨拙)的解决方案是使用 '\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

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

于 2013-08-16T10:04:57.113 回答