Maison  >  Article  >  développement back-end  >  Comment implémenter une barre de progression à l'aide de la bibliothèque de progression en Python

Comment implémenter une barre de progression à l'aide de la bibliothèque de progression en Python

王林
王林avant
2023-04-25 09:01:061807parcourir

Installation et introduction de la bibliothèque Progress

1. Installez la bibliothèque progress

Progress est une bibliothèque Python tierce. Exécutez la commande pip dans le terminal pour l'installer.

pip install progress

2.Affichage de l'effet de la barre de progression

Sur le site officiel, vous pouvez voir les différents effets de la barre de progression que la progression peut obtenir, comme le montre l'animation suivante.

Comment implémenter une barre de progression à laide de la bibliothèque de progression en Python

progress implémente la barre de progression

# coding=utf-8
from progress.bar import Bar
import time

# 创建Bar类的实例
bar = Bar('MyProcess:', max=100)
# 循环处理某业务,调用bar对象的next()方法,循环次数等于max
for _ in range(100):
	# Do some work
    time.sleep(0.05)
    bar.next()
# 循环完成后调用finish()方法
bar.finish()

Effet d'exécution :

Comment implémenter une barre de progression à laide de la bibliothèque de progression en Python

Il est très simple d'implémenter la barre de progression à l'aide de la bibliothèque de progression Importez la classe Bar depuis bar.py de la bibliothèque de progression, instancier un. objet, puis traitez l'entreprise en boucle Et appelez la méthode next(), et une fois le traitement terminé, appelez la méthode finish() pour terminer la barre de progression. Les principaux paramètres de la classe

Bar sont :

  • message : le message affiché par la barre de progression. Ce paramètre peut être passé à Bar en utilisant les paramètres positionnels par défaut.

  • width : Modifiez la largeur de la barre de progression, la valeur par défaut est 32.

  • max : La barre de progression est divisée en plusieurs parties égales, comme 100.

  • suffixe : Le format d'affichage du pourcentage de progression, la valeur par défaut est «%(index)d/%(max)d’.

  • fill : quoi utiliser pour remplir la barre de progression, la valeur par défaut est »#’.

  • empty_fill : Ce qu'il faut utiliser pour remplir la barre de progression déchargée, l'espace par défaut est ’.

  • bar_prefix : préfixe de la barre de progression, par défaut |’.

  • bar_suffix : suffixe de la barre de progression, par défaut ’|.

  • color : La couleur de la barre de progression, par défaut Aucune.

Problème d'affichage de la barre de progression PyCharm résolu

La plupart des programmeurs Python utilisent PyCharm Si l'effet de la barre de progression ne s'affiche pas après l'exécution du code à barres de progression dans PyCharm, vous pouvez suivre les étapes ci-dessous pour le configurer, puis exécuter le code. encore.

Étape 1. Cliquez sur le bouton Exécuter au-dessus de PyCharm, puis cliquez sur Modifier les configurations pour accéder à la page de configuration d'exécution.

Comment implémenter une barre de progression à laide de la bibliothèque de progression en Python

Étape 2. Vérifiez l'option Émuler le terminal dans la console de sortie et réexécutez le code.

Comment implémenter une barre de progression à laide de la bibliothèque de progression en Python

Les amis prudents auraient dû remarquer qu'après l'exécution du code à barres de progression ci-dessus dans PyCharm, il y a une chaîne de caractères étranges sous la barre de progression : ‘?[?25h’, utilisez le script python progress_demo dans le terminal. .py exécute le même code sans cette chaîne de symboles.

Cette chaîne de caractères représente le curseur. Après avoir été exécuté dans PyCharm, le curseur est affiché sur la console. La solution est la suivante : maintenez la touche Ctrl enfoncée, cliquez sur le nom de la classe Bar importée, passez au code source bar.py, puis maintenez la touche Ctrl enfoncée et cliquez sur la classe Progress héritée de la classe Bar, saisissez le __init__.py fichier de la bibliothèque de progression, et change La variable SHOW_CURSOR dans ce fichier est remplacée par une chaîne vide.

Comment implémenter une barre de progression à laide de la bibliothèque de progression en Python

Après avoir modifié le code source puis réexécuté le code, le curseur ne sera plus affiché, et la chaîne de caractères ne sera plus affichée.

Comment implémenter une barre de progression à laide de la bibliothèque de progression en Python

Vous pouvez également rencontrer d'autres problèmes d'affichage lors de l'exécution de la barre de progression dans PyChram. Il est recommandé de l'exécuter en tant que script lorsque des problèmes surviennent. Le résultat de l'exécution du script dans PyChram n'est utilisé que pour le débogage. le code.

Deux autres façons d'écrire un code à barres de progression

1. Gestionnaire de contexte : Utilisez with … comme gestionnaire de contexte pour écrire la barre de progression. Il n'est pas nécessaire d'appeler la méthode finish() après la barre de progression. est terminé.

with Bar('Processing', max=20) as bar:
    for i in range(20):
        time.sleep(0.05)
        bar.next()

2. Utilisez la méthode iter() : L'utilisation de la méthode iter() peut simplifier le travail de l'itérateur et il n'est pas nécessaire d'appeler la méthode next().

for i in Bar('Processing').iter(range(100)):
    time.sleep(0.05)

Les résultats d'exécution de ces deux méthodes d'implémentation sont les mêmes que la méthode d'implémentation d'origine.

Implémentez plus de types de barres de progression

1. Série Bar

Dans l'article précédent, vous avez cliqué sur le code source de la progression. Vous pouvez voir que la classe Bar hérite de la classe Progress et que la classe Progress hérite. de la classe Infinite, de la classe Progress et de la classe Infinite Implémentation des fonctions de base de la barre de progression.

Dans bar.py, en plus de la classe Bar, il existe 6 classes, ChargingBar, FillingSquaresBar, FillingCirclesBar, IncrementalBar, PixelBar et ShadyBar. Ce sont respectivement des sous-classes ou petits-fils de la classe Bar. bar. Dans chaque classe, seules les valeurs des variables suffix, fill, empty_fill, bar_prefix, bar_suffix sont modifiées, et le style de la barre de progression est modifié.

C'est très simple à utiliser. Il vous suffit d'importer ces classes et de remplacer Bar dans le code ci-dessus par ces classes, comme FillingSquaresBar.

from progress.bar import Bar, ChargingBar, FillingSquaresBar, FillingCirclesBar, IncrementalBar, PixelBar, ShadyBar
import time

bar = FillingSquaresBar('MyProcess:', max=100)
for i in range(100):
    time.sleep(0.05)
    bar.next()
bar.finish()

Effet de fonctionnement :

Comment implémenter une barre de progression à laide de la bibliothèque de progression en Python

还可以自己修改上面的参数,设置个性化的进度条,本文暂不扩展,以后有空可以专门写文章介绍。

2. Spinner 系列

progress 库的 spinner.py 中实现了 5 个类,Spinner, PieSpinner, MoonSpinner, LineSpinner, PixelSpinner。

from progress.spinner import Spinner, PieSpinner, MoonSpinner, LineSpinner, PixelSpinner

for i in Spinner('MySpinner:').iter(range(100)):
    time.sleep(0.01)

运行效果:

Comment implémenter une barre de progression à laide de la bibliothèque de progression en Python

3.Counter 系列

progress 库的 counter.py 中实现了 4 个类,Counter, Countdown, Stack, Pie。

from progress.counter import Counter, Countdown, Stack, Pie
import time

for i in Counter('Loading:').iter(range(100)):
    time.sleep(0.01)

运行效果:

Comment implémenter une barre de progression à laide de la bibliothèque de progression en Python

汇总

接下来将上面介绍的所有种类的进度条全部放到一起,代码如下:

from progress.bar import Bar, ChargingBar, FillingSquaresBar, \
    FillingCirclesBar, IncrementalBar, PixelBar, ShadyBar
from progress.spinner import Spinner, PieSpinner, MoonSpinner, LineSpinner, PixelSpinner
from progress.counter import Counter, Countdown, Stack, Pie
import time
import random

progess_list = [Bar, ChargingBar, FillingSquaresBar, FillingCirclesBar, IncrementalBar,
                PixelBar, ShadyBar, Spinner, PieSpinner, MoonSpinner, LineSpinner,
                PixelSpinner, Counter, Countdown, Stack, Pie]
for P in progess_list:
    for i in P(P.__name__ + ':').iter(range(100)):
        time.sleep(0.01)

bar = IncrementalBar('Random:', suffix='%(index)d%%')
for i in range(100):
    bar.goto(random.randint(0, 100))
    time.sleep(0.01)
bar.finish()

运行效果:

Comment implémenter une barre de progression à laide de la bibliothèque de progression en Python

运行代码后可以得出所有种类的进度条,与文章开头从官网截的图效果相同。

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer