Ho visto diverse soluzioni per una barra di avanzamento in Python, ma le semplici soluzioni stdout non funzionano per il mio progetto. Ho più classi e uso il modulo "logging" per inviare informazioni a STDOUT. Ho una funzione di cui voglio mostrare una barra di avanzamento su una riga, svuotando il buffer ogni volta.Barra di avanzamento Python TRAMITE il modulo di registrazione
Esempio del semplice progresso:
for i in range(100):
time.sleep(1)
sys.stdout.write("\r%d%%" %i)
sys.stdout.flush()
Quando tento di scrivere via STDOUT e quindi svuotare il buffer, o il buffer non è arrossato o il progresso non va da nessuna parte. Spero di evitare una sorta di processo di threading o complicato per renderlo possibile. Qualcuno ha un modo preferito per farlo accadere?
Il problema con l'utilizzo di "stampa" è che getta ogni valore su una nuova riga non rendendo l'output una barra di avanzamento. Si suppone che STDOUT svuoti il buffer e scriva sulla linea esistente, ma questo non sembra funzionare quando lo si utilizza nel codice che sta registrando. Intendiamoci, non sto avvolgendo la sintassi del modulo di registrazione sul codice a barre di avanzamento. –
Usando il codice esatto che hai postato sopra, vedo l'output che viene sostituito in posizione. Vedete ciascun numero su una nuova riga? – jknupp