Python, "стирание" предыдущей строки

Вот напишем к примеру код:

while True:
    t = input("> ")
    if t == "0":
        print("Значение 0")
    elif t == "1":
        print("Значение 1")
        clearstr(5)

Где clearstr() - функция, которая будет стирать предыдущую строку через параметр time = 5 (секунд)

Как можно реализовать такую функцию?


Ответы (2 шт):

Автор решения: Amgarak

Можно воспользоваться Таймером, вот вам простой и наглядный пример:

import threading
import os
import time

def clear_console():
    os.system('cls' if os.name == 'nt' else 'clear')
    
threading.Timer(5, clear_console).start()

iter_i=0
while True:
    iter_i+=1
    print(f"!!!{iter_i}")
    time.sleep(1)

Если нам нужно почистить не всю консоль, а только предыдущею строку:

import threading
import os
    
def clear_console():
    print("\033[F\033[K", end="", flush=True)
  # Возврат на предыдущую строку и очистка ее

os.system('cls' if os.name == 'nt' else 'clear')
print("Первая строка")
print("Вторая строка")

threading.Timer(5, clear_console).start()

input()

На эту тему был неплохой ответ тут.

Для PyCharm можете воспользоваться уловкой:

clear = "\n" * 100
print(clear)

Это конечно не совсем очистка, но как вариант)

→ Ссылка
Автор решения: Алексей Р

Работает в PyCharm

import time

while True:
    t = input("> ")
    if t in ["0", "1"]:
        print(f"Значение {t}", end='')
    time.sleep(5)
    print('\r', end='')
> 0
> 1
> 0
Значение 0
→ Ссылка