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
Mary-Kate OlsenOriginal
2024-12-06 07:58:10564Durchsuche

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()

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)

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()

Python 2-Kompatibilität:

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

# -*- coding: utf-8 -*-

Ersetzen Sie Python 3 Zeichenfolgenformatierung in der Fortschrittsbalkenfunktion mit Folgendem:

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

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!

Stellungnahme:
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