Seite 1 von 1

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

Verfasst: Donnerstag 4. November 2010, 14:12
von nomnom
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

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

Verfasst: Donnerstag 4. November 2010, 14:20
von 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.

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

Verfasst: Donnerstag 4. November 2010, 14:27
von nomnom
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'