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.
# 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 :
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.
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.
Étape 2. Vérifiez l'option Émuler le terminal dans la console de sortie et réexécutez le code.
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.
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.
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.
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.
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 :
还可以自己修改上面的参数,设置个性化的进度条,本文暂不扩展,以后有空可以专门写文章介绍。
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)
运行效果:
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)
运行效果:
接下来将上面介绍的所有种类的进度条全部放到一起,代码如下:
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()
运行效果:
运行代码后可以得出所有种类的进度条,与文章开头从官网截的图效果相同。
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!