Bereits mit print() ausgegebenes Zeichen oder ganze Zeile wieder Löschen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
derwookie
User
Beiträge: 1
Registriert: Mittwoch 14. November 2018, 19:53

Hallo,

Wie im Betreff schon beschrieben will ich eine mit print() ausgegebene Zeile bzw ein einzelnes Zeichen wieder löschen, nicht aber das gesamte Terminal (wie mit os.system("clear")). Gibt es dazu eine Möglichkeit? Habe schon herumgegooglet, allerdings nur gefunden, wie man Zeilen und Zeichen in einer Datei löschen kann. Leider.

Intention ist, falls das interessiert ein Countdown.
Es soll zuerst eine 3, dann eine 2 und dann eine 1 an derselben Stelle erscheinen.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Das macht man mit der speziellen Escape-Sequenz \r. Außerdem muss bei einigen Terminals ein flush erzwungen werden, damit man das Ergebnis korrekt sehen kann. Es geht möglicherweise eleganter, aber ich würd's wohl so machen:

Code: Alles auswählen

import time

def print_countdown(count, delay_seconds=1):
    count_range = range(count + 1)
    space = len(str(max(count_range))) * ' '
    for i in reversed(count_range):
        print(i, end='\r', flush=True)
        time.sleep(delay_seconds)
        print(space, end='\r')
    print()
Antworten