Warum python-print-Anweisungen, die enthalten " end=' Argumente Verhalten sich anders in while-Schleifen?

Ich bin mit python version 2.7.3 auf MacOSX.

Betrachten dieser code-block:

from __future__ import print_function
import time
x = 0
while x < 5:
    print(x)
    x += 1
    time.sleep(1)

Wenn ich dieses Skript ausführen, ich beobachte die Ausgabe, die ich erwartet: Die zahlen 0 durch 4 mit einem \n Zeichen angehängt zu jeder Zahl. Darüber hinaus ist jede Zahl zeigt nach einer Sekunde pause.

0
1
2
3
4

Betrachten Sie nun diese code-block:

from __future__ import print_function
import time
x = 0
while x < 5:
    print(x, end='')
    x += 1
    time.sleep(1)

Die Ausgabe ist das, was ich erwarte, 01234 ohne die \n's, aber die timing unerwartet. Anstatt jede Ziffer nach einem ein-Sekunden-pause, der Prozess wartet vier Sekunden, zeigt dann alle fünf zahlen.

Warum print('string') Verhalten sich anders als print('string', end='') in while-Schleifen? Gibt es eine Möglichkeit, die Anzeige der Zeichen, ohne Zeilenumbrüche, eine Sekunde bei einer Zeit? Ich habe versucht sys.stdout.write(str(x)), aber es verhält sich auf die gleiche Weise wie print(end='').

InformationsquelleAutor Christopher | 2012-12-26
Schreibe einen Kommentar