Gelöst: Konsolenausgabe an derselben Stelle schreiben

Letzte Aktualisierung: 09/11/2023

Das Schreiben der Konsolenausgabe an derselben Stelle kann für Entwickler eine nützliche Technik sein, wenn sie mit Python-Anwendungen arbeiten, insbesondere wenn sie Benutzeroberflächen in der Befehlszeile entwickeln, Fortschrittsindikatoren erstellen und Konsolendaten in Echtzeit aktualisieren. In diesem Artikel wird eine Lösung zum Überschreiben der Konsolenausgabe erläutert, der Code Schritt für Schritt erklärt und es werden spezifische Bibliotheken und integrierte Python-Funktionen vorgestellt, die diese Aufgabe ermöglichen.

Um dies zu erreichen, können wir die berühmte Python-Bibliothek „curses“ verwenden, die speziell für die Erstellung terminalbasierter Anwendungen entwickelt wurde, die stark auf die Verwendung textbasierter Benutzeroberflächen angewiesen sind. Der Einfachheit und dem besseren Verständnis halber werden wir jedoch die in Python integrierten Module „sys“ und „time“ verwenden, um Konsolenausgaben zu überschreiben.

Konsolenausgabe in Python überschreiben

Die Hauptidee besteht darin, die Funktion sys.stdout.write() zu verwenden , die es uns ermöglicht, in derselben Zeile auszugeben, zusammen mit dem Wagenrücklaufzeichen („r“), um zum Anfang der Zeile zurückzukehren, wodurch wir die Ausgabe effektiv überschreiben können.

Hier ist ein Beispiel für das Überschreiben der Konsolenausgabe mit Python:

import time
import sys

for i in range(10):
    sys.stdout.write("rStep: %d" % i)
    sys.stdout.flush()
    time.sleep(1)

Schritt-für-Schritt-Erklärung des Codes

1. Importieren Sie zunächst die benötigten Module:

   import time
   import sys
   

Das Modul „time“ dient dazu, eine Verzögerung zwischen den Iterationen einzufügen, und das Modul „sys“ dient dazu, Ausgaben auf der Konsole zu schreiben.

2. Erstellen Sie als Nächstes eine Schleife, um einen Zahlenbereich zu durchlaufen und so einen Fortschrittszähler zu simulieren:

   for i in range(10):
   

Diese Schleife iteriert von 0 bis 9 und wird effektiv zehnmal ausgeführt.

3. Verwenden Sie innerhalb der Schleife die Funktion sys.stdout.write() , um die aktuelle Iterationsnummer zusammen mit einer Marke auszugeben:

   sys.stdout.write("rStep: %d" % i)
   

Das „r“-Zeichen ist der Wagenrücklauf, der als Zurücksetzen auf den Zeilenanfang fungiert und es der nächsten Ausgabe ermöglicht, die aktuelle Ausgabe zu überschreiben.

4. Stellen Sie sicher, dass Sie nach dem Schreiben in die Konsole sys.stdout.flush() verwenden:

   sys.stdout.flush()
   

Die Funktion „flush()“ löscht den internen Puffer und sorgt dafür, dass die Ausgabe sofort angezeigt wird.

5. Zum Schluss fügen Sie mithilfe der Funktion time.sleep() eine Verzögerung hinzu :

   time.sleep(1)
   

Diese Pause dauert eine Sekunde, sodass Sie leichter beobachten können, wie die Ausgabe überschrieben wird.

Jetzt können Sie sehen, wie die Konsolenausgabe bei jeder Iteration überschrieben wird.

Übersicht über die „sys“-Bibliothek

Die sys- Bibliothek ist ein leistungsstarkes, in Python integriertes Modul, das Zugriff auf die internen Abläufe des Interpreters und verschiedene systemspezifische Parameter ermöglicht. In diesem Artikel haben wir uns auf die Verwendung der Funktionen `sys.stdout.write()` und `sys.stdout.flush()` zum Überschreiben der Konsolenausgabe konzentriert. Die „sys“-Bibliothek bietet jedoch viele weitere Funktionen, wie beispielsweise Kommandozeilenargumente, Byte-Reihenfolge, Ausnahmebehandlung und vordefinierte Pfade.

Übersicht über die „Zeit“-Bibliothek

Die Bibliothek `time` ist ein weiteres integriertes Python-Modul, das verschiedene Funktionen zur Zeitmanipulation und -verarbeitung bietet. In unserem Beispiel haben wir die Funktion `time.sleep()` verwendet , um eine Verzögerung zwischen Iterationen zu erzeugen. Die Bibliothek `time` stellt außerdem weitere Werkzeuge zur Verfügung, um die Ausführungszeit zu messen, zwischen Zeitformaten zu konvertieren und die aktuelle Zeit zu ermitteln. Dieses Modul ist unerlässlich für Entwickler, die mit zeitbezogenen Funktionen arbeiten oder Aufgaben in Python-Anwendungen planen.

Zusammenhängende Posts: