2016-01-22 13 views
5

Ci sono già un sacco di altre domande circa la dichiarazione di stampa, ma non ho trovato una risposta al mio problema:PyCharm fine stampa = ' r' affermazione non lavora

Quando faccio:

for idx in range(10): 
    print(idx, end="\r") 

nel terminale (ipython) direttamente, funziona correttamente e sovrascrive sempre la riga precedente. Tuttavia, quando si esegue questo in un modulo con PyCharm, non vedo alcuna riga stampata nello stdout.

Si tratta di un problema noto di PyCharm?

+0

Non credo che si possa fare affidamento sul comportamento di "\ r". Vedi http://stackoverflow.com/a/1761086/5568445 –

+0

Hai provato a lavare alla fine? 'print (..., flush = True)' –

+0

Intersting ... ma sfortunatamente non mi aiuta. C'è forse un altro modo in cui posso far funzionare questo in PyCharm @tobias_k flush non aiuta;) – HansSnah

risposta

3

Prova:

for idx in range(10): 
     print('\r', idx, end='') 

Carriage Return sul davanti, e alla fine con '' per evitare la nuova linea '\ n'. Una soluzione per evitare lo spazio è utilizzare la convenzione di formato:

for idx in range(10): 
     print("'\r{0}".format(idx), end='') 
+0

SÌ! La prima soluzione ha funzionato per me usando PyCharm e Python3 – StarSweeper

1

Ho avuto lo stesso problema. Mentre una soluzione che utilizza print() mi ha eluso, ho trovato che sys.stdout.write funziona bene. (Win10, Python 3.5.1, Pycharm 2016.3.2)

import sys 
import time 

def countdown(n): 
    for x in reversed(range(n)): 
     sys.stdout.write('\r' + str(x)) 
     time.sleep(1) 

countdown(60)