PDA

Visualizza la versione completa : [PYTHON] Stampa senza ritorno a capo


carlo2002
22-08-2012, 20:26
Sto usando per la prima volta python :fagiano:

questa è una porzione del codice che uso

print "0"

for x1 in caratteri_1:
for x2 in caratteri_2:
for x3 in caratteri_3:
parola = x1 + x2 + x3
x = x + 1
percentuale_calcolata = int( 100 * x / totale_risultati )
if percentuale_calcolata > percentuale_visualizzata:
percentuale_visualizzata = percentuale_calcolata
print percentuale_visualizzata

così i numeri della percentuale_visualizzata compaiono uno sotto l'altro, pensavo di farli comparire uno dopo l'altro senza l'invio a capo e quindi ho aggiunto la virgola alla fine del print all'interno dei cicli

però così facendo, durante l'esecuzione dello script non viene visualizzato niente ed i numeri compaiono solo quando finisce l'esecuzione.

come mai? grazie

MItaly
22-08-2012, 20:44
L'output su standard output, quando effettuato su terminale, è bufferizzato di default a linea; questo significa che se vai a capo l'output viene immediatamente inviato al terminale, se non lo fai, Python lo tiene in un buffer per evitare di perdere tempo ad inviare i dati per ogni minimo output.

Per forzare un flush del buffer di output, comunque, ti basta fare:


import sys
# ...

sys.stdout.flush()

carlo2002
22-08-2012, 22:04
Grazie mille, adesso va.

Ma se volessi che non comparissero tutti i numeri, ma solo quello della percentuale corrente, è possibile?

Sto cercando ma non trovo niente in merito.

MItaly
23-08-2012, 00:12
Su Linux puoi usare il carattere "\b" per tornare indietro nel terminale, non ricordo se funziona anche su Windows (ma credo di sì).

carlo2002
23-08-2012, 00:31
Ok, adesso funziona :)

(non uso win)

ciao grazie :ciauz:

MItaly
23-08-2012, 00:47
:ciauz:

(tra parentesi, se hai bisogno di controllo completo sul terminale puoi usare il modulo curses (http://docs.python.org/library/curses.html))

carlo2002
26-08-2012, 16:08
neanche sapevo che esisteva questa roba :fagiano:

Una figata :D

grazie

Loading