Ich möchte ein Python-Skript schreiben, das seinen aktuellen Fortschritt in der letzten Zeile des Terminals anzeigt, ähnlich wie apt
(nicht apt-get
) verhält. Ich weiß, dass es ANSI-Kontrollsequenzen gibt, um mit dem Terminal zu interagieren, aber das Problem ist, dass ich andere Programme (mit subprocess
) aufrufen möchte, die ihre eigene Ausgabe produzieren. Ich möchte nicht, dass diese Programme meine Fortschritte überschreiben.apt-like Fortschritt in der letzten Zeile des Terminals
Es können mehrere Subprozesse gleichzeitig ausgeführt werden. Ich benutze das multithreading
Modul und jeder Thread macht etwas Arbeit, dann Anrufe und wartet auf einen Unterprozess, dann macht Aufräumarbeiten. Es macht mir nichts aus, dass die Ausgabe der Unterprozesse gemischt wird, solange die letzte Zeile geschont wird.
Wenn das Programm beendet wird, sollte die letzte Zeile gelöscht werden.
Mögliche Duplikat [? Wie kann ich Ausgang an gleicher Stelle auf der Konsole schreiben] (https://stackoverflow.com/questions/517127/How-Do-Ich-Schreibe-Ausgabe-in-der-gleichen-Stelle-auf-der-Konsole) – jbndlr
Dies ist ein wenig einfacher, wenn Sie die Fortschrittslinie an der Spitze des Terminals haben. Hier ist ein Beispiel, das ich vor einiger Zeit geschrieben habe: https://StackOverflow.com/a/45164619/4014959 Aber auch https://StackOverflow.com/a/37501797/4014959 –
Ich empfehle die ['tqdm'] (https : //github.com/tqdm/tqdm) Bibliothek. Ich glaube, dass es die ganze Funktionalität hat, um zu tun, was Sie fragen. – SethMMorton