2016-04-17 7 views
4

ich * Blitz auf der Kommandozeile in einem Intervall von 1 Sekunde machen will.Machen Sie eine blinkende Betriebsanzeige auf Python-Shell

import time 
from sys import stdout 

while True: 
    stdout.write(' *') 
    time.sleep(.5) 
    stdout.write('\r ') 
    time.sleep(.5) 

Alles, was ich bekommen, ist eine leere Zeile, kein * blinkt.

Warum ist das?

+0

Ihr Programm funktioniert gut für mich. Es muss ein Problem mit Ihrer Umgebung sein. Benutzt du Leerlauf? – frankenapps

+1

Warum nicht drucken? –

+0

nein, ich bin mit KDE Terminal „Konsole“ –

Antwort

5

Überprüfen Sie dies. Dies wird in Intervallen von 0,5 Sekunden * auf eine Linie drucken, und zeigt für 0,5 Sekunden (blinkt, wie Sie es genannt)

import time 

while True: 
    print('*', flush=True, end='\r') 
    time.sleep(0.5) 
    print(' ', flush=True, end='\r') 
    time.sleep(0.5) 

Beachten Sie, dass dies nicht in IDLE funktioniert, aber mit cmd es funktioniert gut.

Ohne die Verwendung von zwei Druckanweisungen, können Sie es auf diese Weise tun:

import time 

i = '*' 
while True: 
    print('{}\r'.format(i), end='') 
    i = ' ' if i=='*' else '*' 
    time.sleep(0.5) 
+0

druckt sich wiederholende * auf Windows, end = ‚\ r‘ funktioniert für mich –

6

Werfen Sie einen Blick auf die Diskussion hier: How to overwrite the previous print to stdout in python?
Der folgende Code in der IDLE-Umgebung arbeitet und die Befehlszeile unter Windows 10 :

import time 

while True: 
    print('*', end="\r") 
    time.sleep(.5) 
    print(' ', end="\r") 
    time.sleep(.5)