Ausgabe des Bearbeitungszustands

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
Jeremy
User
Beiträge: 48
Registriert: Samstag 29. November 2008, 19:05

Montag 24. Oktober 2011, 10:11

Hallo Forum,

in meinem Skript wird der Fortschritt wie folgt für den Nutzer sichtbar:

Code: Alles auswählen

for i in range(100):
  tue etwas
  print "Bin bei Schritt %i von 100" %i
Damit erhalte ich bei jedem Schleifendurchlauf eine neue Ausgabe in die shell (also hier 100 Zeilen). Was muss ich tun, damit nur einen Zeile geschreiben wird, die aber immer wieder aktualisiert wird?

Gruß
Jeremy
BlackJack

Montag 24. Oktober 2011, 10:51

@Jeremy: Das Zeichen '\r' ist der Wagenrücklauf. Heisst so, weil er beim Drucker den Druckkopf wieder an den Anfang der Zeile zurück fährt. Um sicher zu sein, dass die Daten auch ausgegeben werden, solltest Du `sys.stdout.flush()` aufrufen. Konsolenausgaben sind nämlich in der Regel zeilengepuffert, das heisst die werden erst ausgegeben, wenn ein '\n' ausgegeben wurde. Oder eben wenn man die Ausgabe explizit mit `flush()` erzwingt.
Jeremy
User
Beiträge: 48
Registriert: Samstag 29. November 2008, 19:05

Dienstag 25. Oktober 2011, 08:33

Wunderbar, ich bedanke mich recht herzlich.
Antworten