Der folgende kleine Codeschnipsel zeigt die Implementierung einer ganz simplen Fortschrittsanzeige (ProgressBar) in Form eines ASCII-Balkens an der Konsole des Raspberry Pi (sicher auch unter Windows oder Mac).
001 import sys
002
003 def progress_bar():
004
005 for i in range(51):
006 sys.stdout.write('\r')
007 sys.stdout.write("[%-50s] %d%%" % ('#'*i, 2*i))
008 sys.stdout.flush()
009 time.sleep(0.1)
010 print '\n'
011
012 prograss_bar()
Führen Sie diesen Code aus, dann erhalten Sie in etwa das folgende Ergebnis an Ihrer Konsole:
[##################################################] 100%
In Zeile 005 legen Sie die Breite in Zeichen an der Konsole fest, in diesem Fall 50 x das Zeichen #
(+/-1, da i bei 0 beginnt). Zeile 007 füllt den Balken pro Schleifen-Durchlauf mit einem #
auf. Da 100% bei voll erreicht werden sollen, muss folglich die 50*2 multipliziert werden, um auch 100 statt 50 zu zeigen.
Ich setze diese Art der Progressbar dort ein, wo der User bestimmte Programmschritte abbrechen kann und ein wenig Zeit bekommt um dies zu tun. Ist die Zeit abgelaufen, so startet die betreffende Verarbeitung und das Programm läuft weiter. Er hat also eine Nachdenkzeit zum stoppen, ansonsten geht es normal weiter im Programm.
Tipp: Möchten Sie, das die ProgressBar in grün zu sehen ist, dann probieren Sie das folgende Coding aus:
003 def progress_bar():
004 NORMAL = '\033[0;39m'
005 GREEN = '\033[1;32m'
006 for i in range(51):
007 sys.stdout.write('\r')
008 sys.stdout.write(GREEN + "[%-50s] %d%%" % ('#'*i, 2*i))
009 sys.stdout.flush()
010 time.sleep(0.1)
011 print NORMAL + '\n'
Auf der Konsole des Raspberry Pi 3 B+ erhalte ich eine schöne grüne Darstellung der PrograssBar. In Zeile 004 und 005 legen Sie die grüne Farbe für den Balken fest und schalten am Ende der Schleife wieder auf den normalen Farbmodus der Bash zurück. In Zeile 008 wird zu Beginn der Ausgabe auf grün umgeschaltet.