Seite 1 von 1

Bereits geprintetes pberschreiben?

Verfasst: Mittwoch 24. Mai 2006, 10:05
von murph
Ich hatte mal eine Idee zum spaß an der Freude, die mir sehr simpel erschien und an sich total einfach, aber ich bin da auf ein Problem gekommen:
Ich müsste etwas überschreiben, was ich mit print ausgegeben habe.

Code: Alles auswählen

#!/usr/bin/env python
import sys
i = 0
printed = ""
while i < int(sys.argv[1]):
    i+=1 
    printed = printed + str(i)
    if i % 4 == 0 and i != 0:
        printed = printed +'\r'   
    print printed
Nur soll nun jede halbe sekunde printed geprintet werden, was ich an sich mit time.sleep(0.5) in der schleife machen könnte, aber mein Problem ist, dass die Ausgabe in mehreren Zeilen erfaolgt, es soll aber dem Anwender Stück für Stück vorgeführt werden, wie ich/der Skript zum ergebnis komme.
Daür sollte die Ausgabe sich jedes mal 'aktualisieren', spjrich überschreiben. wie kann ich das machen? geht das überhaupt?

Verfasst: Mittwoch 24. Mai 2006, 10:11
von murph
habe bereits eine akzeptierbare anwort gefunden:

Code: Alles auswählen

print '\033[2J'
Aber gibt es eine elegantere Lösung?

vor allem, weil die Ausgabe nicht nach Wunsch ist:
_1
_12
_123
_1234
51234
Die Zahlen 1 - 1234 sind eingerückt und nur ewgen des Forums nicht korrekt lesbar, deshalb die unterstriche
Es wird eine Lücke erzeugt! Da soll aber auch die 1 stehen, das soll der Ausgangspunkt sein!
Später, wenn es sich um zweistellige zahlen handelt, ist das verständlich, dass er mehr plätze brauch, daran ist auch nichts auszusetzen, aber solange die Zahlen einstellig sind, sollte das schon noch nach plan funktionieren...
Testversion:

Code: Alles auswählen

#!/usr/bin/env python
import sys, time
i = 0
printed = ""
while i < int(sys.argv[1]):
    i+=1 
    if i == 0:
        printed = str(i)
    else:
        printed = printed + str(i)
    if i % 4 == 0 and i != 0:
        printed = printed +'\r'   
    print '\033[2J',printed
    time.sleep(0.5)
[/b]