Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich in Python frühere Druckausgaben in derselben Zeile überschreiben?
Vorherige Druckausgaben in derselben Zeile überschreiben
Bei der Programmierung kommt es häufig zu Situationen, in denen Sie einen vorhandenen angezeigten Wert aktualisieren müssen die Standardausgabe (stdout), ohne eine neue Zeile hinzuzufügen. Betrachten Sie den folgenden Python-Code:
for x in range(10): print(x)
Dieser Code gibt die Zahlen 1 bis 10 in separaten Zeilen aus. Um den vorherigen Wert zu überschreiben und durch den neuen Wert in derselben Zeile zu ersetzen, können Sie die folgenden Techniken verwenden:
Einfache Version:
Verwenden Sie den Wagenrücklauf ( 'r')-Zeichen, um zum Zeilenanfang zurückzukehren, ohne zur nächsten Zeile zu wechseln.
Python 3:
for x in range(10): print(x, end='\r') print()
Python 2.7 Vorwärtskompatibel:
from __future__ import print_function for x in range(10): print(x, end='\r') print()
Python 2.7:
for x in range(10): print '{}\r'.format(x), print
Python 2.0-2.6:
for x in range(10): print '{0}\r'.format(x), print
In diesen Beispielen unterdrückt das abschließende Komma nach der print-Anweisung den Zeilenumbruch. Die endgültige Druckanweisung geht zur nächsten Zeile über und stellt sicher, dass Ihre Eingabeaufforderung Ihre Ausgabe nicht überschreibt.
Zeilenreinigung:
Wenn Sie nicht garantieren können, dass die neue Zeile Wenn der Text nicht kürzer als die vorhandene Zeile ist, können Sie die Escape-Sequenz „Clear to end of line“ „x1b[1K“ („x1b“ =) verwenden ESC):
for x in range(75): print('*' * (75 - x), x, end='\x1b[1K\r') print()
Langer Zeilenumbruch:
Bei den oben genannten Methoden wird davon ausgegangen, dass Sie nicht über die Zeilenlänge hinaus schreiben. Der Wagenrücklauf führt nur zum Anfang der aktuellen Zeile zurück. Wenn Ihre Ausgabe daher die Zeilenlänge überschreitet, löschen Sie nur die letzte Zeile.
Um dieses Problem zu mildern und zu verhindern, dass der Cursor in die nächste Zeile springt, können Sie den Zeilenumbruch deaktivieren:
print('\x1b[7l', end='') # Disable line wrapping print('\x1b[7h', end='') # Re-enable line wrapping
Bitte beachten Sie, dass Sie den Zeilenumbruch am Ende des Codeblocks manuell wieder aktivieren müssen, um zu vermeiden, dass das Terminal in einem fehlerhaften Zustand bleibt.
Das obige ist der detaillierte Inhalt vonWie kann ich in Python frühere Druckausgaben in derselben Zeile überschreiben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!