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
Libérer: 2024-12-06 07:58:10
original
545 Les gens l'ont consulté

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()
Copier après la connexion

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)
Copier après la connexion

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()
Copier après la connexion

Compatibilité Python 2 :

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

# -*- coding: utf-8 -*-
Copier après la connexion

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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal