Übrigens...... Wie kann man sie jedes Mal aktualisieren, damit sie an einem Ort gedruckt wird, indem man die Nummer ändert.
Im Allgemeinen geschieht dies mit Terminal-Steuercodes . Dies ist ein besonders einfacher Fall, für den Sie nur ein Sonderzeichen benötigen: U+000D CARRIAGE RETURN, das geschrieben wird '\r'
in Python (und vielen anderen Sprachen). Hier ist ein vollständiges Beispiel, das auf Ihrem Code basiert:
from sys import stdout
from time import sleep
for i in range(1,20):
stdout.write("\r%d" % i)
stdout.flush()
sleep(1)
stdout.write("\n") # move the cursor to the next line
Einige Dinge, die vielleicht überraschend sind:
- En
\r
wird an den Anfang der Zeichenkette gesetzt, so dass sich der Cursor während der Ausführung des Programms immer hinter der Zahl befindet. Das ist nicht nur kosmetisch: Einige Terminal-Emulatoren sind sehr verwirrt, wenn Sie es andersherum machen.
- Wenn Sie die letzte Zeile nicht einfügen, wird Ihre Shell nach der Beendigung des Programms ihren Prompt über der Zahl ausgeben.
- En
stdout.flush
ist auf einigen Systemen notwendig, sonst erhalten Sie keine Ausgabe. Bei anderen Systemen ist dies vielleicht nicht erforderlich, aber es schadet nicht.
Wenn Sie feststellen, dass dies nicht funktioniert, sollten Sie als erstes vermuten, dass Ihr Terminalemulator fehlerhaft ist. Der vttest Programm kann Ihnen beim Testen helfen.
Sie könnten die stdout.write
mit einer print
Aussage, aber ich ziehe es vor, nicht zu mischen print
mit direkter Verwendung von Dateiobjekten.