Gelöst: Konsolenausgabe an derselben Stelle schreiben

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 ist die Verwendung von sys.stdout.write() Funktion, die es uns ermöglicht, zusammen mit dem in derselben Zeile zu drucken Wagenrücklauf Zeichen („r“), um zum Zeilenanfang 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 Zeit Das Modul wird verwendet, um Verzögerungen zwischen Iterationen hinzuzufügen sys Das Modul wird verwendet, um die Ausgabe auf die 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 sys.stdout.write() Funktion zum Drucken der aktuellen Iterationsnummer zusammen mit einer Beschriftung:

   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 es verwenden sys.stdout.flush() nachdem ich auf die Konsole geschrieben habe:

   sys.stdout.flush()
   

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

5. Fügen Sie abschließend eine Verzögerung mit hinzu time.sleep () Funktion:

   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

Das sys Die Bibliothek ist ein leistungsstarkes integriertes Python-Modul, das Zugriff auf die Interna des Interpreters und verschiedene systemspezifische Parameter bietet. In diesem Artikel haben wir uns auf die Verwendung konzentriert sys.stdout.write() und sys.stdout.flush() Funktionen zum Überschreiben der Konsolenausgabe. Die „sys“-Bibliothek bietet jedoch viele weitere Funktionalitäten, wie Befehlszeilenargumente, Bytereihenfolge, Ausnahmen und vordefinierte Pfade.

Übersicht über die „Zeit“-Bibliothek

Das Zeit Die Bibliothek ist ein weiteres integriertes Python-Modul, das eine Vielzahl von Funktionen im Zusammenhang mit der Zeitmanipulation und -verarbeitung bietet. In unserem Beispiel haben wir das verwendet time.sleep () Funktion zum Erstellen einer Verzögerung zwischen Iterationen. Die „time“-Bibliothek bietet auch andere Tools zum Messen der Ausführungszeit, zum Konvertieren zwischen Zeitformaten und zum Abrufen der aktuellen Zeit. Dieses Modul ist unerlässlich für Entwickler, die mit zeitbezogenen Funktionen oder Planungsaufgaben in Python-Anwendungen arbeiten.

Zusammenhängende Posts:

Hinterlasse einen Kommentar