2010-11-27 34 views
0

Pourquoi cette horloge Python s'exécute uniquement à partir de Python2, Python3 ne fait rien.Problème de retour arrière

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) 

Répondre

4

En Python 3, vous devez vider le tampon d'impression pour forcer l'écriture des caractères sur l'écran.

Ajouter

import sys 

au début de votre script et changer la boucle

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

En fait, cela devrait également être nécessaire pour Python 2.x (au moins lors de l'utilisation de la fonction d'impression). –

+0

Sur mon système, cela ne fonctionne pas non plus dans Python 2. –

+0

Sur mon système (Windows 7 x64), cela fonctionne sans cela dans Python 2.7. –

1

Le problème est pas avec la version python, mais que vous avez oublié de vider la sortie standard. Essayez de changer votre code:

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) 

sys.stdout débusque que lorsqu'une nouvelle ligne est imprimée aussi.