Barre de progression

Bengt Richter bokr at oz.net
Thu Oct 17 23:41:18 EDT 2002


On Fri, 18 Oct 2002 01:10:19 +0200, Meles MELES <meles at free.fr> wrote:

>Bonsoir à tous,
>        je suis à la recherche d'exemple d'implémentation d'une ba
>rre de progression en mode console (ou, à défaut en mode graphique) un 
>peu du style de celle de urpmi lors de l'installation d'un paquet a
>vec la mandrake. Si en plus, à la fin de celle ci, le pourcentage de t
>ravail effectué pouvait s'afficher, ce serai le bonheur.
>
>L'idéal pour moi serait de voir un code tout fait pour m'en inspirer, au 
>pire un peu de docs derait l'affaire.
>
If you just want to show progress on the last line of console window,
you can just rewrite the last line with a \r in front and no \n at the end,
e.g.,

class ConsoleProgress:
    import sys
    def __init__(self, start, finish):
        self.start = float(start)
        self.interval = float(finish-start)/100.0
        if self.interval <= 0: raise ValueError, 'Bad interval'
    def __call__(self, now):
        n = int(0.5 +(now-self.start)/self.interval)
        if n>100: n = 100
        self.sys.stdout.write('\r%3d%% %s' % (n, 'o'*int(n/2.)+'.'[n%2==0:] +'!'[n!=100:]))

def test():
    import time
    now = time.time()
    cp = ConsoleProgress(now,now+8.0)
    for pc in range(81):
        cp(time.time())
        time.sleep(0.1)
    print '\nDone ;-)'

test()

Is that something like what you had in mind?

Regards,
Bengt Richter



More information about the Python-list mailing list