Maison >développement back-end >Tutoriel Python >Comment puis-je créer une barre de progression de texte dans le terminal à l'aide de Python ?

Comment puis-je créer une barre de progression de texte dans le terminal à l'aide de Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-06 07:58:10535parcourir

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

Barre de progression du texte dans le terminal avec des caractères de bloc

Trouver une méthode appropriée pour visualiser la progression du téléchargement et du téléchargement dans le terminal sans effacer la sortie précédente peut être une tâche courante. Cet article explore les solutions Python pour créer une barre de progression ou une visualisation similaire qui s'affiche sur la console tout en préservant la sortie antérieure du programme.

Barre de progression simple et personnalisable

Pour une barre de progression à usage général, vous peut utiliser la fonction Python suivante :

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

Exemple d'utilisation :

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

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

Compatibilité Python 2 :

Pour la compatibilité avec Python 2, ajoutez ce qui suit en haut de votre script :

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

Remplacez Python 3 formatage de chaîne dans la fonction de barre de progression avec ce qui suit :

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

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn