Certains programmes sont capables de modifier la sortie de la console, wget me vient facilement à l’esprit.
Comment puis-je faire cela en pur Python? Je sais que IPython a clear_output () . J'ai essayé ça mais même ça ne marche pas. Et je préférerais du pur Python.
from IPython.core.display import clear_output
from time import sleep
for i in range(100):
clear_output()
print '[', '='*i, ' '*(100-i), ']'
sleep(0.1)
Il existe actuellement un certain nombre de packages qui vous permettent d'écrire une interface de ligne de commande. Je sais que cliquez sur une barre de progression , par exemple.
Oh, et en ce qui concerne votre exigence "pur python", mon ami est quelque chose de non-rythmique. Python veut que vous utilisiez des packages tiers.
Bien qu'une bibliothèque appropriée soit la meilleure solution, j'aimerais montrer une alternative simple: utilisez \r
(retour chariot) au lieu de \n
(saut de ligne) pour les fins de ligne, afin que le curseur soit placé au début de la ligne en cours, au lieu de sur la ligne suivante.
#! /usr/bin/python3
from time import sleep
for i in range(100):
print('[' + '='*i + ' '*(100-i) + ']', end='\r')
sleep(0.1)
La solution suggérée par Helio fonctionne très bien! J'avais besoin de pip install progressbar
d'abord, mais ensuite l'un des exemples officiels fonctionne à merveille.
from progressbar import *
pbar = ProgressBar(widgets=[Percentage(), Bar()], maxval=300).start()
for i in range(300):
time.sleep(0.01)
pbar.update(i+1)
pbar.finish()
Site officiel (avec exemples): https://code.google.com/p/python-progressbar/