Fondamentalmente voglio fare l'opposto di quello che ha fatto questo ragazzo ... hehe.Stampa sulla stessa riga e non su una nuova riga in python
Python Script: Print new line each time to shell rather than update existing line
Ho un programma che mi sta dicendo a che punto è.
for i in some_list:
#do a bunch of stuff.
print i/len(some_list)*100," percent complete"
Quindi se len (some_list) era 50, avrei ottenuto quell'ultima riga stampata 50 volte. Voglio stampare una riga e continuare ad aggiornare quella linea. So che so che questa è probabilmente la domanda più debole che leggerai tutto il giorno. Non riesco a capire le quattro parole che devo inserire su google per ottenere la risposta.
Aggiornamento! Ho provato il suggerimento di mvds che sembrava giusto. Il nuovo codice
print percent_complete," \r",
percentuale completa è solo una stringa (stavo astraendo la prima volta ora un cercando di essere letterale). Il risultato ora è che esegue il programma, non stampa NULLA fino a dopo che il programma è finito, e quindi stampa "100% completo" su una sola riga.
Senza il ritorno a capo (ma con la virgola, metà del suggerimento del mvds) non stampa nulla fino alla fine. E poi stampa:
0 percent complete 2 percent complete 3 percent complete 4 percent complete
E così via. Quindi ora il nuovo problema è che con la virgola non viene stampata fino al termine del programma.
Con il ritorno a capo e nessuna virgola si comporta esattamente come con nessuno dei due.
Si potrebbe anche voler controllare 'sys.stdout.isatty()' in modo da non sputare queste cose quando non sono in esecuzione in un terminale. – mvds
Lo sto facendo da un terminale ... un buon pensiero però. Sono sicuro che ne avrò bisogno ad un certo punto. – chriscauley
lo sfondo è, btw, che in diverse lingue il \ n (che ora omettiamo) serve come segnale implicito per il flush allo stdout. Altrimenti molte persone saranno confuse. – mvds