Piszę prosty downloader ftp. Część z kodem jest coś takiego:wyjście do tej samej linii, nadpisując poprzednie dane wyjściowe? python (2.5)
ftp.retrbinary("RETR " + file_name, process)
Wołam proces funkcyjny do obsługi callback:
def process(data):
print os.path.getsize(file_name)/1024, 'KB/', size, 'KB downloaded!'
file.write(data)
i wyjście jest coś takiego:
1784 KB/KB 1829 downloaded!
1788 KB/KB 1829 downloaded!
etc...
ale Chcę, aby wydrukować tę linię, a następnie ponownie wydrukować/odświeżyć go tak, aby wyświetlał się tylko raz, a ja zobaczę postęp tego pobierania ...
Jak to zrobić?
Zauważ, że funkcję drukowania można również używać w pythonie 2.6+, dodając następujący import na górze pliku: 'from __future__ import print_function'. – janin
w pytonie <3.0 przecinek na końcu instrukcji uniemożliwi "\ n": 'print" foo ",' Jednak nadal musisz przepłukać, aby zobaczyć zmianę: 'sys.stdout.flush() ' –
Znalazłem, że muszę dołączyć' \ r' na początku łańcucha i zamiast tego ustawić 'end = ''', aby to działało. Nie sądzę, że mój terminal lubi to, gdy kończę z '\ r' – Jezzamon