Предпосылка
Я пытаюсь в основном очистить строку консоли, но не все окно консоли, не используя пробелы, чтобы у меня не было лишних символов из того, что было напечатано в последний раз.Например:
# This causes characters from the last thing printed:
print("I don't know you.", end="\r")
print("Hello Jim!", end="\r")
# Yields the following (without the quotations) -->
# "Hello Jim!ow you."
Теперь, чтобы решить эту проблему, можно сделать следующее:
import os
def new_print(message, end):
"""
Clears console, no matter the size of the previous line
without wrapping to a new line
"""
width_of_console = int(os.popen("stty size", "r").read().split()[1])
# = 17
print(f"{message :<{width_of_console}}", end=end)
new_print("I don't know you.", end="\r")
new_print("Hello Jim!", end="\r")
# Yields the following (without the quotations) -->
# "Hello Jim! "
Вопрос
Как мне
- Просто распечатать
"Hello Jim!"
, а не "Hello Jim! "
(оба явно без кавычек) - Очистить эту строку
- Пока не очищается вся консоль (чтобы у меня был выводдругих вещей, кроме последней строки)
В частности, подобные вещи происходят в консоли при изменении размеров (скажем, ширина консоли от 17 до 30), что в моем случае случается довольно часто:
Hello Jim! Hello Jim!
Hello Jim! Hello Jim
! Hello Jim! Hello
Jim! Hello Jim! H
ello Jim! Hello Jim!
Я открыт для совершенно нового способа ведения дел, например, urwid или чего-то в этом роде.