Вопрос:
В Python вы можете печатать в той же строке, используя r, чтобы вернуться к началу строки.
Это хорошо работает для индикаторов выполнения или увеличения счетчиков precentage, например: Печать на Python в той же строке
Однако при печати строк, которые могут уменьшаться по длине, это оставляет текст предыдущей строки там, например:
import sys for t in [‘long line’, ‘%’]: sys.stdout.write(t + ‘r’) sys.stdout.write(‘n’)
Выводит текст терминала как: %ong line.
Каков наилучший способ записи более короткой строки после более длинной при печати в одну строку?
Ответ №1
Я думаю, что самый простой способ сделать это – написать пробелы над символами. Для этого было бы неплохо написать столько пробелов, сколько нужно для последней строки.
Пример:
previousLength = 0 for t in [«long line», «%»]: print(» » * previousLength, end=»r») print(t, end=»r») previousLength = len(t) print(«n») Ответ №2
Наряду с r необходима ansi-последовательность 33[K – стирайте до конца строки.
Этот код работает так, как ожидалось.
import sys for t in [‘long line’, ‘%’]: sys.stdout.write(‘