Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich mit Python einen Textfortschrittsbalken im Terminal erstellen?

Wie kann ich mit Python einen Textfortschrittsbalken im Terminal erstellen?

Mary-Kate Olsen
Freigeben: 2024-12-06 07:58:10
Original
569 Leute haben es durchsucht

How Can I Create a Text Progress Bar in the Terminal Using Python?

Textfortschrittsleiste im Terminal mit Blockzeichen

Eine geeignete Methode zur Visualisierung des Download- und Upload-Fortschritts im Terminal zu finden, ohne vorherige Ausgaben zu löschen, kann eine häufige Aufgabe sein. In diesem Artikel werden Python-Lösungen zum Erstellen eines Fortschrittsbalkens oder einer ähnlichen Visualisierung untersucht, die an die Konsole ausgegeben werden und gleichzeitig die vorherige Programmausgabe beibehalten.

Einfacher, anpassbarer Fortschrittsbalken

Für einen Allzweck-Fortschrittsbalken, Sie kann die folgende Python-Funktion verwenden:

def printProgressBar(iteration, total, prefix='', suffix='', decimals=1, length=100, fill='█', printEnd='\r'):
    """
    Call in a loop to create a terminal progress bar
    @params:
        iteration   - Required  : current iteration (Int)
        total       - Required  : total iterations (Int)
        prefix      - Optional  : prefix string (Str)
        suffix      - Optional  : suffix string (Str)
        decimals    - Optional  : positive number of decimals in percent complete (Int)
        length      - Optional  : character length of bar (Int)
        fill        - Optional  : bar fill character (Str)
        printEnd    - Optional  : end character (e.g. "\r", "\r\n") (Str)
    """
    percent = ("{0:.{dec}f}".format(100 * (iteration / float(total)), dec=decimals))
    filledLength = int(length * iteration / total)
    bar = fill * filledLength + '-' * (length - filledLength)
    print(f'\r{prefix} |{bar}| {percent}% {suffix}', end=printEnd)
    if iteration == total:
        print()
Nach dem Login kopieren

Beispielverwendung:

# A List of Items
items = list(range(0, 57))
l = len(items)

printProgressBar(0, l, prefix='Progress:', suffix='Complete', length=50)
for i, item in enumerate(items):
    # Do stuff...

    # Update Progress Bar
    printProgressBar(i + 1, l, prefix='Progress:', suffix='Complete', length=50)
Nach dem Login kopieren

Einzelaufruf Version:

def progressBar(iterable, prefix='', suffix='', decimals=1, length=100, fill='█', printEnd='\r'):
    """
    Call in a loop to create a terminal progress bar
    @params:
        iterable    - Required  : iterable object (Iterable)
        prefix      - Optional  : prefix string (Str)
        suffix      - Optional  : suffix string (Str)
        decimals    - Optional  : positive number of decimals in percent complete (Int)
        length      - Optional  : character length of bar (Int)
        fill        - Optional  : bar fill character (Str)
        printEnd    - Optional  : end character (e.g. "\r", "\r\n") (Str)
    """
    total = len(iterable)

    def printProgressBar(iteration):
        percent = ("{0:.{dec}f}".format(100 * (iteration / float(total)), dec=decimals))
        filledLength = int(length * iteration / total)
        bar = fill * filledLength + '-' * (length - filledLength)
        print(f'\r{prefix} |{bar}| {percent}% {suffix}', end=printEnd)

    printProgressBar(0)
    for i, item in enumerate(iterable):
        yield item
        printProgressBar(i + 1)
    print()
Nach dem Login kopieren

Python 2-Kompatibilität:

Für Kompatibilität mit Python 2 fügen Sie am Anfang Ihres Skripts Folgendes hinzu:

# -*- coding: utf-8 -*-
Nach dem Login kopieren

Ersetzen Sie Python 3 Zeichenfolgenformatierung in der Fortschrittsbalkenfunktion mit Folgendem:

print('%\r%s |%s| %s%% %s' % (prefix, bar, percent, suffix), end=printEnd)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich mit Python einen Textfortschrittsbalken im Terminal erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage