La création d'une barre de progression dans le terminal peut grandement améliorer l'expérience utilisateur en fournissant un visuel représentation de l’avancement d’une tâche. Cependant, maintenir l’intégrité des sorties précédentes de la console lors de la mise à jour de la barre de progression peut s’avérer un défi. Cet article explique comment créer une barre de progression en Python tout en préservant le texte précédent.
Voici une fonction de barre de progression réutilisable qui résout le problème :
def printProgressBar(iteration, total, prefix='', suffix='', decimals=1, length=100, fill='█', printEnd='\r'): percent = ("{0:." + str(decimals) + "f}").format(100 * (iteration / float(total))) filledLength = int(length * iteration // total) bar = fill * filledLength + '-' * (length - filledLength) print(f'\r{prefix} |{bar}| {percent}% {suffix}', end=printEnd) if iteration == total: print()
Parameter | Description |
---|---|
iteration | Current iteration of the loop |
total | Total number of iterations |
prefix | Prefix text before the progress bar |
suffix | Suffix text after the progress bar |
decimals | Number of decimal places for percentage |
length | Width of the progress bar |
fill | Character used to fill the progress bar |
printEnd | End of line character (e.g., 'r') |
Pour utiliser la barre de progression, appeler la fonction dans une boucle :
total_items = 100 for item in range(total_items): # Do your processing here... printProgressBar(item + 1, total_items)
Pour un cas d'utilisation simplifié, considérez cette version à appel unique de la barre de progression :
def progressBar(iterable, prefix='', suffix='', decimals=1, length=100, fill='█', printEnd='\r'): total = len(iterable) def printProgressBar(iteration): percent = ("{0:." + str(decimals) + "f}").format(100 * (iteration / float(total))) 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() for item in progressBar(range(100)): # Do your processing here...
Cette version ne nécessite aucun appel initial pour définir la barre de progression à 0 % et accepte les itérables en entrée.
Pour la compatibilité Python 2, utilisez le code suivant au lieu du formatage de chaîne Python 3 :
print('\r%s |%s| %s%% %s' % (prefix, bar, percent, suffix), end=printEnd)
En tirant parti des fonctions fournies, vous pouvez sans effort intégrez une barre de progression de texte dans vos applications console tout en évitant l'effacement du texte précédent. Les paramètres personnalisables permettent une apparence de barre de progression sur mesure qui répond à vos besoins spécifiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!