8

を使用して1文字戻すことができます\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

考えられる (少しハックな) 解決策の 1 つは、'\033[1A' を使用して 1 行戻ることです。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 に答える