Sto scrivendo un semplice downloader ftp. Parte del al codice è qualcosa di simile:output sulla stessa riga sovrascrivendo l'output precedente? python (2.5)
ftp.retrbinary("RETR " + file_name, process)
sto chiamando processo di funzione per gestire il callback:
def process(data):
print os.path.getsize(file_name)/1024, 'KB/', size, 'KB downloaded!'
file.write(data)
e l'uscita è qualcosa di simile:
1784 KB/KB 1829 downloaded!
1788 KB/KB 1829 downloaded!
etc...
ma voglio che stampi questa riga e la prossima volta ristampa/aggiorna in modo che lo mostri solo una volta e vedrò il progresso di quel download ...
Come può essere fatto?
Si noti che la funzione di stampa può essere utilizzata anche in python 2.6+ aggiungendo la seguente importazione nella parte superiore del file: 'da __future__ import print_function'. – janin
in python <3.0 una virgola alla fine dell'istruzione impedirà un "\ n": 'stampa" pippo ",' Tuttavia, è necessario eseguire lo svuotamento successivo per vedere la modifica: 'sys.stdout.flush() ' –
Ho trovato che dovevo includere il' \ r' all'inizio della stringa, e impostare 'end = ''' invece per farlo funzionare. Non penso che piaccia al mio terminale quando termino con '\ r' – Jezzamon