Rozwiązano: zapisz dane wyjściowe konsoli w tym samym miejscu

Zapisywanie danych wyjściowych konsoli w tym samym miejscu może być użyteczną techniką dla programistów podczas pracy z aplikacjami w języku Python, szczególnie podczas opracowywania interfejsów użytkownika w wierszu poleceń, tworzenia wskaźników postępu i aktualizowania danych konsoli w czasie rzeczywistym. W tym artykule omówimy rozwiązanie polegające na nadpisywaniu danych wyjściowych konsoli, wyjaśnimy kod krok po kroku i zagłębimy się w konkretne biblioteki i wbudowane funkcje Pythona, które umożliwiają to zadanie.

Aby to osiągnąć, możemy użyć słynnej biblioteki Pythona „curses”, która została specjalnie zaprojektowana do tworzenia aplikacji terminalowych, które w dużym stopniu zależą od użycia tekstowych interfejsów użytkownika. Jednakże, dla uproszczenia i łatwości zrozumienia, użyjemy wbudowanych w Pythona modułów „sys” i „time” do nadpisywania danych wyjściowych konsoli.

Nadpisywanie danych wyjściowych konsoli w Pythonie

Główną ideą jest wykorzystanie sys.stdout.write() funkcja, która pozwala nam drukować w tej samej linii, wraz z powrót karetki znak („r”), aby powrócić na początek linii, co skutecznie pozwala nam na nadpisanie wyniku.

Oto przykład nadpisywania danych wyjściowych konsoli przy użyciu języka Python:

import time
import sys

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

Wyjaśnienie kodu krok po kroku

1. Najpierw zaimportuj wymagane moduły:

   import time
   import sys
   

Kurs czas moduł zostanie użyty do dodania opóźnienia pomiędzy iteracjami, oraz sys moduł będzie używany do zapisywania danych wyjściowych do konsoli.

2. Następnie utwórz pętlę do iteracji po zakresie liczb, symulując licznik postępu:

   for i in range(10):
   

Ta pętla iteruje od 0 do 9, w rzeczywistości uruchamiając się dziesięć razy.

3. Wewnątrz pętli użyj metody sys.stdout.write() funkcja drukująca numer bieżącej iteracji wraz z etykietą:

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

Znak „r” to powrót karetki, który działa jak reset do początku linii, umożliwiając następnemu wyjściu nadpisanie bieżącego.

4. Upewnij się, że używasz sys.stdout.flush() po napisaniu do konsoli:

   sys.stdout.flush()
   

Funkcja Flush() czyści wewnętrzny bufor i zapewnia natychmiastowe wyświetlenie wyniku.

5. Na koniec dodaj opóźnienie za pomocą czas spać() funkcjonować:

   time.sleep(1)
   

Ta pauza będzie trwać jedną sekundę, co ułatwi obserwację nadpisywania danych wyjściowych.

Teraz możesz zobaczyć, jak dane wyjściowe konsoli są nadpisywane w każdej iteracji.

Przegląd biblioteki „sys”.

Kurs sys biblioteka to potężny wbudowany moduł Pythona, który zapewnia dostęp do wewnętrznych elementów interpretera i różnych parametrów specyficznych dla systemu. W tym artykule skupiliśmy się na użyciu sys.stdout.write() i sys.stdout.flush() funkcje nadpisywania danych wyjściowych konsoli. Jednakże biblioteka „sys” oferuje wiele innych funkcjonalności, takich jak argumenty wiersza poleceń, kolejność bajtów, wyjątki i predefiniowane ścieżki.

Przegląd Biblioteki „czasu”.

Kurs czas biblioteka to kolejny wbudowany moduł Pythona, który oferuje różnorodne funkcje związane z manipulacją i przetwarzaniem czasu. W naszym przykładzie wykorzystaliśmy czas spać() funkcja tworząca opóźnienie pomiędzy iteracjami. Biblioteka „time” udostępnia także inne narzędzia do pomiaru czasu wykonania, konwersji pomiędzy formatami czasu i uzyskania aktualnego czasu. Moduł ten jest niezbędny dla programistów pracujących z funkcjami związanymi z czasem lub planującymi zadania w aplikacjach Python.

Powiązane posty:

Zostaw komentarz