Heim >Backend-Entwicklung >Python-Tutorial >Wie erstelle ich in Python eine anpassbare Terminaltext-Fortschrittsleiste, ohne die vorherige Ausgabe zu überschreiben?
Problem:
Wie kann man in einer Konsolenanwendung einen Fortschritt anzeigen? bar, wenn Dateien mit ftplib hoch- oder heruntergeladen werden, ohne zuvor gedruckte Dateien zu stören Text?
Lösung:
Um einen anpassbaren Fortschrittsbalken zu erstellen, der aktualisiert und gleichzeitig die Konsolenausgabe beibehält, berücksichtigen Sie Folgendes:
Option 1 : Einzelanruf
def progressBar(iterable, prefix="", suffix="", decimals=1, length=100, fill="█", printEnd="\r"): """ Single-call progress bar function. Args: iterable (Iterable): Iteratable object. prefix (str): Prefix string. suffix (str): Suffix string. decimals (int): Number of decimals in percent complete. length (int): Character length of bar. fill (str): Fill character. printEnd (str): End character. """ total = len(iterable) def printProgressBar(iteration): percent = "{0:.{1}f}".format(100 * (iteration / float(total)), 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()
Beispiel Verwendung:
import time items = list(range(57)) for item in progressBar(items, prefix="Progress:", suffix="Complete", length=50): # Do stuff... time.sleep(0.1)
Option 2: Mehrere Anrufe
def printProgressBar(iteration, total, prefix="", suffix="", decimals=1, length=100, fill="█", printEnd="\r"): """ Progress bar printing function. Args: iteration (int): Current iteration. total (int): Total iterations. prefix (str): Prefix string. suffix (str): Suffix string. decimals (int): Number of decimals in percent complete. length (int): Character length of bar. fill (str): Fill character. printEnd (str): End character. """ percent = "{0:.{1}f}".format(100 * (iteration / float(total)), 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:
import time items = list(range(57)) # Initial call to print 0% progress printProgressBar(0, len(items), prefix="Progress:", suffix="Complete", length=50) for i, item in enumerate(items): # Do stuff... time.sleep(0.1) printProgressBar(i + 1, len(items), prefix="Progress:", suffix="Complete", length=50)
Beide Optionen bieten anpassbare Fortschrittsbalken, die dynamisch aktualisiert werden, ohne vorherige Konsolenausgaben zu überschreiben.
Das obige ist der detaillierte Inhalt vonWie erstelle ich in Python eine anpassbare Terminaltext-Fortschrittsleiste, ohne die vorherige Ausgabe zu überschreiben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!