Output di console modificabile in Python

5

Alcuni programmi sono in grado di modificare l'output della console, wget mi viene in mente facilmente.

Come posso farlo in puro Python? So che IPython ha clear_output () . Ci ho provato, ma anche quello non funziona. E preferirei il puro 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)

    
posta ArekBulski 12.04.2015 - 20:15

3 risposte

5

Ci sono in realtà un numero di pacchetti che ti permettono di scrivere un'interfaccia a riga di comando. So che clic ha una barra di avanzamento , ad esempio.

Oh, e per quanto riguarda il tuo requisito "python puro", che il mio amico è qualcosa che è unpitonico. Python vuole che tu usi i pacchetti di terze parti.

    
risposta data don.joey 12.04.2015 - 21:58
11

Anche se una libreria adeguata è la soluzione migliore, mi piacerebbe mostrare una semplice alternativa: usare \r (ritorno a capo) invece di \n (avanzamento riga) per le fine riga, in modo che il cursore sia posizionato all'inizio della riga corrente, anziché sulla riga successiva.

#! /usr/bin/python3

from time import sleep

for i in range(100):
    print('[' + '='*i + ' '*(100-i) + ']', end='\r')
    sleep(0.1)
    
risposta data muru 12.04.2015 - 21:04
6

La soluzione suggerita da Helio funziona alla grande! Avevo bisogno di pip install progressbar prima, ma poi uno degli esempi ufficiali funziona come un incantesimo.

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()

Sito ufficiale (con esempi): link

    
risposta data ArekBulski 12.04.2015 - 20:46

Leggi altre domande sui tag