2012-06-13 11 views
12

Ho bisogno di stampare su una riga in un ciclo (Python 3.x). Guardando in giro su SO già, ho messo questa riga nel mio codice:python: stampa utilizzando il ritorno a capo e la virgola non funziona

print('{0} imported\r'.format(tot),) 

Tuttavia, esso stampa ancora più righe quando in loop attraverso. Ho anche provato

sys.stdout.write('{0} imported\r'.format(tot)) 

ma questo non stampa nulla alla console ...

Qualcuno sa che cosa sta succedendo con questo?

+0

'sys.stdout.write()' funziona per me .. avete 'sys' importazione. Stai cercando di sovrapporre l'output sulla stessa linea? – Levon

+0

Se stai cercando di ottenere lo stesso effetto di 'print text,' da python 2.x, devi usare l'argomento 'end', come in' print (text, end = '') '. La virgola alla fine degli argomenti della funzione non ha alcun effetto. – James

+0

Non sono sicuro di "da 2.x". La riga 'print (text, end = '')' mi dà un errore di sintassi al '='. – rossmcm

risposta

17

Nel primo caso, alcuni sistemi considereranno \r come una nuova riga. Nel secondo caso, non hai effettuato la riga flush. Prova questo:

sys.stdout.write('{0} imported\r'.format(tot)) 
sys.stdout.flush() 

Lavaggio la linea non è necessario in tutti i sistemi o, come Levon mi ricorda - ma è generalmente una buona idea quando si utilizza \r in questo modo.

+0

@ kevlar1818 Come ho detto nel commento, ha funzionato per me (anche senza svuotare il buffer di output) ... dispari – Levon

+0

'sys.stdout.flush()' era quello di cui avevo bisogno. Grazie! – kevlar1818

9

Se si desidera sovrascrivere l'ultima riga, è necessario aggiungere \ r (carattere di ritorno) e fine = "" in modo da non andare alla riga successiva.

values = range(0, 100) 
for i in values: 
    print ("\rComplete: ", i, "%", end="") 
print ("\rComplete: 100%") 
3

preferisco usare la soluzione di Jan, ma in questo modo:

values = range(0, 101) 
for i in values: 
    print ("Complete: ", i, "%", end="\r") 
print ("\n\r", end="") 
+3

L'ultima riga è overkill. Dovrebbe essere solo 'print()'. –

Problemi correlati