I can go one caracter back using \b
:
>>> print("123#456")
123#456
>>> print("123#\b456")
123456
But it doesn't work if a line break is involved :
>>> print("123#\n456")
123#
456
>>> print("123#\n\b456")
123#
456
Is there a way to go line break back ?
I'm asking this because I have a progress at the previous line:
53%
And I use \b
to update the value. But if somebody prints something, it breaks it. I tried to create a buffer of strings and print enought '\b' to compensate for it, then print the buffer back. But it doesn't work if there are line breaks.
One possible (a bit hacky) solution is to use '\033[1A' to go back one line. Replace 1 with number of lines to jump back. There are several other escape sequences you can use to manipulate the cursor. Check out the complete list at: 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
Note that this will probably not work for all terminals.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With