Was kann ich verwenden, um noch einen Zeilenumbruch zurück in ein terminal, in Python?
Kann ich gehen Sie einen caracter wieder mit \b
:
>>> print("123#456")
123#456
>>> print("123#\b456")
123456
Aber es funktioniert nicht, wenn ein Zeilenumbruch beteiligt ist :
>>> print("123#\n456")
123#
456
>>> print("123#\n\b456")
123#
456
Ist es, einen Weg zu gehen Zeilenumbruch zurück ?
Ich Frage das, weil ich einen Fortschritt bei der bisherigen Linie:
53%
Und ich benutze \b
um den Wert zu aktualisieren. Aber wenn jemand druckt etwas, es bricht. Ich habe versucht, erstellen einen Puffer von Streichern und drucken genug ist '\b', um es zu ersetzen, dann gib den Puffer zurück. Aber es funktioniert nicht, wenn dort Zeilenumbrüche.
- In der Regel, Sie zu vermeiden, drucken Sie die neue, oder verwenden Sie Flüche. In der Standard-Linie-orientierte text-Modus auf POSIX-Systemen, können Sie nicht das newline zurück.
- Sehen Sie das gleiche Verhalten für alle progress-bars für Befehlszeilen-Dienstprogramme. Verwenden
wget
um eine große Datei, dann drücken Sie enter, während es lädt. - input.replace('\n', ") - ist das helfen ?
- Sie können versuchen, zu verwenden '\033[1A', um zurück zu gehen eine Zeile (als Ersatz 1 mit der Anzahl der Zeilen, um zu springen. Es wird wahrscheinlich brechen in einigen terminals.
- machen Sie es eine Antwort, so kann ich es akzeptieren. Einige Erklärungen wären auch Super.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer möglichen (ein bisschen hacky) Lösung ist die Verwendung von '\033[1A', um zurück zu gehen eine Zeile. Ersetzen Sie die 1 mit der Anzahl der Zeilen zurück zu springen. Es gibt einige andere escape-Sequenzen, die Sie verwenden können, um zu manipulieren, der cursor. Überprüfen Sie die vollständige Liste unter: http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html
Beachten Sie, dass dies wahrscheinlich nicht funktionieren für alle terminals.