Bereits geprintetes pberschreiben?

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.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Bereits geprintetes pberschreiben?

Beitragvon murph » Mittwoch 24. Mai 2006, 10:05

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?
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Beitragvon murph » Mittwoch 24. Mai 2006, 10:11

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]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder