Python3 При печати CR и некоторого текста текст не стирается - PullRequest
1 голос
/ 25 марта 2020

Я пытаюсь написать код для прогресса. Когда я печатаю CR, он просто перемещает курсор в начало, но текст остается. как показано ниже:

print('xxxxx', end='\r')
print('yy')  # I want to print only 'yy'
>> yyxxx

Можно ли удалить текст, а не просто переместить курсор?

Ответы [ 2 ]

2 голосов
/ 25 марта 2020

Если вы используете терминал, который понимает escape-последовательности ANSI (которые являются наиболее распространенными терминалами), вы можете использовать следующее:

print('xxxxx', end='\r')
print('yy\x1b[K')

Последовательность \x1b[K дает указание терминалу удалить курсор до конца строки.

1 голос
/ 26 марта 2020

Аналогично ответу Чепнера, но может быть немного более понятным для читателей кода, не знакомых с управляющими символами ANSI

CURSOR_UP_ONE = "\x1b[1A"
ERASE_LINE = "\x1b[2K"

print("xxxxx")
print(CURSOR_UP_ONE + ERASE_LINE + "yy")

Если вы не любите жестко их кодировать, они доступны в популярной третьей стороне lib colorama :

>>> import colorama  # pip install colorama
>>> colorama.ansi.clear_line()
'\x1b[2K'
>>> colorama.ansi.Cursor.UP()
'\x1b[1A'
...