Ich bin neu in Python und schreibe einige Skripte, um das Herunterladen von Dateien von FTP-Servern usw. zu automatisieren. Ich möchte den Fortschritt des Downloads anzeigen, aber ich möchte, dass er an derselben Position bleibt, wie z.
Ausgabe:
Herunterladen der Datei FooFile.txt [47%]
Ich versuche so etwas zu vermeiden:
Downloading File FooFile.txt [47%]
Downloading File FooFile.txt [48%]
Downloading File FooFile.txt [49%]
Wie soll ich das machen?
Duplizieren : Wie kann ich in einer Befehlszeilenanwendung über die aktuelle Zeile drucken?
python
console-output
Scottm
quelle
quelle
Antworten:
Sie können auch den Wagenrücklauf verwenden:
quelle
\r
an den Anfang der Zeile und füge ein hinzu\x1b[K
, um den vorherigen Text zu löschen.print("sample text", end='\r", flush=True)
Python 2
Ich mag folgendes:
Demo:
Python 3
Demo:
PyCharm Debugger Console mit Python 3
quelle
Verwenden Sie eine Terminal-Handling-Bibliothek wie das Curses-Modul :
quelle
Drucken Sie das Rücktastezeichen
\b
mehrmals aus und überschreiben Sie dann die alte Nummer mit der neuen Nummer.quelle
print 'Downloading.... \r'
) löscht auch keine vorherigen Daten, verhindert jedoch, dass Sie wissen müssen, wie weit die Sicherung zurückliegt.quelle
Für Python 3xx:
quelle
Eine nette Lösung, die für mich funktioniert hat, ist:
Das
sys.stdout.flush
ist wichtig, sonst wird es sehr klobig und derprint("")
On-for-Loop-Ausgang ist ebenfalls wichtig.UPDATE : Wie in den Kommentaren erwähnt,
print
hat auch einflush
Argument. Also wird auch folgendes funktionieren:quelle
flush=True
to angebenprint
, sodass kein zusätzlichersys.stdout.flush()
Aufruf erforderlich ist .quelle