time.sleep() und carriage return (\r)

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
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

Hallo!
Ich möchte mit ``print`` einen Text ausgeben, dann kurz mit time.sleep() warten und den Text überschreiben. Wieso wird hier nicht der Text 'Test 123' ausgegeben?

Code: Alles auswählen

#!/usr/bin/env python

from time import sleep

print 'Test 123\r',
sleep(0.5)
print 'ABCD 321'
Kommt mir komisch vor. Auch bei dem hier wird nicht sofort 'Test 123' ausgegeben:

Code: Alles auswählen

#!/usr/bin/env python

from time import sleep

print 'Test 123',
sleep(0.5)
print 'ABCD 321'
Kann man das irgendwie umgehen?

Viele Grüße,
nomnom
BlackJack

@nomnom: Ausgaben in Dateien können gepuffert werden, je nach Dateieinstellungen bis der Puffer voll ist, oder bis ein Zeilenendezeichen kommt. Du müsstest den Pufferinhalt explizit mit der `flush()`-Methode rausschreiben. Für die Standardausgabe wäre `sys.stdout` das passende Dateiobjekt dafür.
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

BlackJack hat geschrieben:@nomnom: Ausgaben in Dateien können gepuffert werden, je nach Dateieinstellungen bis der Puffer voll ist, oder bis ein Zeilenendezeichen kommt. Du müsstest den Pufferinhalt explizit mit der `flush()`-Methode rausschreiben. Für die Standardausgabe wäre `sys.stdout` das passende Dateiobjekt dafür.
Vielen Dank, BlackJack :-)

Hab es jetzt so:

Code: Alles auswählen

#!/usr/bin/env python

from sys import stdout
from time import sleep

print 'Test 123\r',
stdout.flush()
sleep(0.5)
print 'ABCD 321'
Antworten