2010-11-27 4 views
0

Warum diese Python-Uhr nur von Python2 läuft, tut Python3 nichts.Backspace Problem

from __future__ import print_function 
import time 
wipe = '\b'*len(time.asctime()) 
print("The current date and time are: "+' '*len(wipe), end='') 
while True: 
    print(wipe+time.asctime(), end='') 
    time.sleep(1) 

Antwort

4

In Python 3, müssen Sie den Druckpuffer spülen die Zeichen zu zwingen, auf den Bildschirm geschrieben werden.

import sys 

zu Beginn des Skripts hinzufügen und die Schleife

while True: 
    print(wipe+time.asctime(), end='') 
    sys.stdout.flush() 
    time.sleep(1) 
+0

Eigentlich sollte dies auch für Python 2.x notwendig sein (zumindest bei Verwendung der Druckfunktion). –

+0

Auf meinem System funktioniert es auch ohne Python 2 nicht. –

+0

Auf meinem System (Windows 7 x64) funktioniert das ohne Python 2.7. –

1

Das Problem ist nicht mit der Python-Version ändern, sondern vielmehr, dass Sie die Standardausgabe zu spülen vergessen. Versuchen Sie, Ihren Code in:

from __future__ import print_function 
import time 
import sys 
wipe = '\b'*len(time.asctime()) 
print("The current date and time are: "+' '*len(wipe), end='') 
while True: 
    print(wipe+time.asctime(), end='') 
    sys.stdout.flush() 
    time.sleep(1) 

Nur sles.stdout wird gelöscht, wenn auch ein Zeilenumbruch gedruckt wird.