Как стереть последний символ вывода консоли? - PullRequest
1 голос
/ 01 декабря 2019

Я бы стер с консоли последний напечатанный мной символ.

Я пытался:

import sys

print('hello')
sys.stdout.write("\b")
sys.stdout.write(" ")
sys.stdout.flush()

, чтобы получить hell, но я получил это: enter image description here

Я пытался:

import sys
print("FAILED...")
sys.stdout.write("\033[F") #back to previous line
sys.stdout.write("\033[K") #clear line
print("SUCCESS!")

, что я получил с этого сайта и получаю: enter image description here

the ", конец = '' "трюк также не работает: enter image description here

Я также нашел это:

CURSOR_UP_ONE = '\x1b[1A'
ERASE_LINE = '\x1b[2K'
import sys
print("hello")
sys.stdout.write(CURSOR_UP_ONE)
sys.stdout.write(ERASE_LINE)

, но также неправильно: enter image description here

Что мне делать?

Ответы [ 2 ]

0 голосов
/ 01 декабря 2019

Вы не удаляете символ с помощью \b, вы резервируете только одну позицию, а персонаж заменяется следующей, поэтому добавление пробела будет работать.

print("hello", end="\b \b") # replace default \n

Выход:

hell
0 голосов
/ 01 декабря 2019

Ваша проблема в том, что print добавляет дополнительный символ в конце: \n (новая строка), так что этот символ - то, что вы фактически удаляете, например:

hello будет напечатанокак hello\n, то есть hello\n + \b = hello

Чтобы предотвратить добавление новой строки print, вы можете использовать параметр end, который определяет, как завершить вашу строку,как это:

import sys
print('Hello', end='')
sys.stdout.write('\b')
sys.stdout.flush()
>>> hell
...