Les suggestions ci-dessus sont plutôt bonnes, mais je pense que la plupart des gens veulent simplement une solution prête à l'emploi, qui ne dépende pas de paquets externes, mais qui soit également réutilisable.
J'ai obtenu les meilleurs points de tout ce qui précède, et j'en ai fait une fonction, avec des cas de test.
Pour l'utiliser, il suffit de copier les lignes sous "def update_progress(progress)" mais pas le test script. N'oubliez pas d'importer sys. Appelez cette fonction à chaque fois que vous avez besoin d'afficher ou de mettre à jour la barre de progression.
Cela fonctionne en envoyant directement le " \r "dans la console pour ramener le curseur au début. "print" en python ne reconnaît pas le symbole ci-dessus dans ce but, donc nous avons besoin de 'sys'.
import time, sys
# update_progress() : Displays or updates a console progress bar
## Accepts a float between 0 and 1. Any int will be converted to a float.
## A value under 0 represents a 'halt'.
## A value at 1 or bigger represents 100%
def update_progress(progress):
barLength = 10 # Modify this to change the length of the progress bar
status = ""
if isinstance(progress, int):
progress = float(progress)
if not isinstance(progress, float):
progress = 0
status = "error: progress var must be float\r\n"
if progress < 0:
progress = 0
status = "Halt...\r\n"
if progress >= 1:
progress = 1
status = "Done...\r\n"
block = int(round(barLength*progress))
text = "\rPercent: [{0}] {1}% {2}".format( "#"*block + "-"*(barLength-block), progress*100, status)
sys.stdout.write(text)
sys.stdout.flush()
# update_progress test script
print "progress : 'hello'"
update_progress("hello")
time.sleep(1)
print "progress : 3"
update_progress(3)
time.sleep(1)
print "progress : [23]"
update_progress([23])
time.sleep(1)
print ""
print "progress : -10"
update_progress(-10)
time.sleep(2)
print ""
print "progress : 10"
update_progress(10)
time.sleep(2)
print ""
print "progress : 0->1"
for i in range(100):
time.sleep(0.1)
update_progress(i/100.0)
print ""
print "Test completed"
time.sleep(10)
Voici ce que montre le résultat du test script (La dernière barre de progression s'anime) :
progress : 'hello'
Percent: [----------] 0% error: progress var must be float
progress : 3
Percent: [##########] 100% Done...
progress : [23]
Percent: [----------] 0% error: progress var must be float
progress : -10
Percent: [----------] 0% Halt...
progress : 10
Percent: [##########] 100% Done...
progress : 0->1
Percent: [##########] 99.0%
Test completed
0 votes
Utilisez-vous une boîte à outils GUI ou CLI uniquement ?
0 votes
CLI. Mais je peux utiliser une bibliothèque tierce, ce n'est pas un problème. Je peux le faire avec l'interface graphique, mais je suis intéressé par la partie CLI.
4 votes
Duplicata possible de Barre de progression du texte dans la console Notez que si cette question a été publiée trois jours plus tôt, la question liée est plus fréquemment consultée.
0 votes
Voici une solution pour l'intérieur d'un Jupyter Notebook : mikulskibartosz.name/
0 votes
J'ai publié un nouveau type de barre de progression, que vous pouvez imprimer, voir le débit et l'eta, même la mettre en pause, en plus des animations très cool ! Jetez-y un coup d'oeil : github.com/rsalmei/alive-progress ! vivant-progressif
0 votes
Je n'ai pas de boucle, il s'agit d'une simple commande d'écriture. Dans ce cas, est-ce possible ? ` with open(path2file, 'wb+') as f : # with open(path2file, 'w+') as f : f.write(data.read())`