Command Line Echtzeit Update

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
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Hallo zusammen
Ich schreibe gerade an einer kleinen Molekülsimulation. Das kann zwischendurch mal eine Weile dauern bis das ganze Zeug berechnet ist. In dieser Zeit zeige ich mir alle möglichen Werte in der Shell an (print energy, etc). Dh. da ruckeln tausende von Zahlen über den Bildschirm und jetzt habe ich mich gefragt, ob es irgendwie möglich ist, dass ich nur eine Zahl anzeige, diese sich aber im Laufe der Simulation verändert.
So könnte ich mir auch zwei Werte gleichzeitig anzeigen lassen, was mir im Moment nicht möglich ist (bspw. Energie und Simulationszeit, Verteilungsfunktionen, etc).

Wie kann man das machen?
[url=http://www.proandkon.com]proandkon.com[/url]
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Dafür musst du direkt auf dem Ausgabestrom arbeiten:

Code: Alles auswählen

from time import sleep
from sys import stdout

def test():
    for i in xrange(31):
        stdout.write('\r%d' % i)
        stdout.flush()
        sleep(.2)
    stdout.write('\n')
Wichtig ist `flush`, damit die Ausgabe sofort angezeigt wird.
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Sehr cool, danke schön.
Da hab ich gleich ein paar neue Sachen zum ausprobieren.
[url=http://www.proandkon.com]proandkon.com[/url]
Antworten