Что я могу использовать для возврата на одну строку назад в терминале в Python?
Я могу вернуться на один символ назад, используя \b
:
>>> print("123#456")
123#456
>>> print("123#\b456")
123456
Но это не работает, если речь идет о разрыве строки:
>>> print("123#\n456")
123#
456
>>> print("123#\n\b456")
123#
456
Есть ли способ вернуть разрыв строки?
Я спрашиваю об этом, потому что у меня есть прогресс в предыдущей строке:
53%
И я пользуюсь \b
обновить значение. Но если кто-то что-то печатает, это ломает. Я попытался создать буфер строк и напечатать достаточно \ 'b', чтобы компенсировать это, затем распечатать буфер обратно. Но это не работает, если есть разрывы строк.
1 ответ
Одним из возможных (немного хакерских) решений является использование \033[1A'для возврата на одну строку назад. Замените 1 количеством строк, чтобы вернуться назад. Есть несколько других escape-последовательностей, которые вы можете использовать для управления курсором. Ознакомьтесь с полным списком по адресу: 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
Обратите внимание, что это, вероятно, не будет работать для всех терминалов.