W tym artykule o Pythonie poruszymy sobie temat pakietu pozwalającego na tworzenie prostych pasków postępu 😮. W języku Python jest wiele pakietów stworzonych do tego celu, a ja pokażę "progressbar" 🚀! Zapraszam do środka 😊! Opiszę działanie pakietu i przedstawię kilka metod ❤️!
PRZEDSTAWIAM PAKIET "PROGRESSBAR" JAKO OPCJA DO TWORZENIA PASKÓW POSTĘPU!
Najpierw króciutko opis samego pakietu, potem metody 🙂.
CZYM JEST "PROGRESSBAR" W JĘZYKU PYTHON?
"progressbar" jest niewielkim w rozmiarach pakietem służącym do tworzenia najprostszych pasków postępu w konsoli, gdyż cała "grafika" opiera się na znakach ASCII 😊. Możesz kiedykolwiek chcieć dodać do programu ukazanie postępu jakiegoś ważnego czasochłonnego procesu, który wymaga więcej cierpliwości, niż odrobinę 🙂. Wtedy może Ci się to przydać 👍.
Przy użyciu tego pakietu, pasek postępu będzie wypisywał na wyjściu aktualny procent ukończenia, przy czym jest regulowany "sztucznie" 😲. To znaczy, że sami ustawiamy wartość jaka ma się wyświetlić 😁. Nie przypisujemy do niego żadnego procesu i on sam nie rejestruje żadnych jego postępów zgodnie z rzeczywistością ❌. Możemy nawet ustawić sobie od razu 100% i też zadziała 😉.
Zacznijmy od samego początku ▶️. "progressbar" nie znajduje się w standardowej bibliotece Pythona, stąd w pierwszej kolejności należy go zainstalować 💾!
JAK ZAINSTALOWAĆ PAKIET "PROGRESSBAR"?
Wystarczy otworzyć sobie wiersz poleceń ("cmd") i wpisać poniższe polecenie 👇:
pip install progressbarPo krótkiej chwili pakiet powinien zostać zainstalowany, a "dowodem" tego jest komunikat o takiej (bądź podobnej) treści 👇:
Successfully installed progressbar-2.5Pakiet "progressbar" jest leciutki, zatem cały proces zajmie góra kilkanaście sekund 😄. Jeżeli masz błąd, że system nie rozpoznaje hasła "pip", musisz upewnić się, że masz poprawnie dodaną ścieżkę do Pythona w zmiennej środowiskowej "Path" ⚠️.
To tyle, co mieliśmy do zrobienia przed rozpoczęciem korzystania z "progressbar" ✅. Teraz można przejść do kodu źródłowego 😊!
JAK SKORZYSTAĆ Z PAKIETU "PROGRESSBAR"?
Aby móc korzystać z pakietu "progressbar" w języku Python, należy go najpierw zaimportować ↩️. Dopisujemy sobie ten oto wiersz na samej górze skryptu 👇:
import progressbarTo nazywamy instrukcją importu ℹ️. Po jej użyciu, mamy pełny dostęp do zawartości jaką posiada w sobie pakiet 🔓! Jeżeli potrzebujesz tylko fragment tego pakietu, możesz alternatywnie skorzystać z hasła "from" 👇:
from progressbar import [wartość/metoda występująca w module]Zapis wpływa na późniejsze odwoływanie się do składowych, więc warto to mieć na uwadze ⚠️. Więcej szczegółów zarówno o słowie "import", jak i "from", znajdziesz w odrębnych artykułach ℹ️. Ja do prezentowania przykładów, posłużyłem się pierwszym zapisem 🙂.
Ostatni krok przed ukazaniem samych metod, to utworzenie obiektu paska postępu. Jedziemy 😁!
JAK STWORZYĆ PASEK POSTĘPU W JĘZYKU PYTHON?
Mając zainstalowany i zaimportowany pakiet "progressbar", wystarczy sobie utworzyć zmienną i skorzystać z konstruktora "ProgressBar" 🏭. To jest przykładowe użycie 👇:
my_progress_bar = progressbar.ProgressBar(100)Najprostsza forma, to przekazanie do konstruktora jedynie maksymalnej wartości, czyli ile ma być "segmentów" składających się na 100% 🔥. Jeżeli dla przykładu wstawimy 16, to później wprowadzenie do metody aktualizującej liczby 1 będzie oznaczało postęp paska równy 1/16, czyli 6,25% 👍. W taki sposób to działa 🙂.
Inny konstruktor pozwala na wprowadzanie "widżetów", czyli elementów graficznego interfejsu użytkownika ❤️. To jest przykład trochę trudniejszego zapisu konstruktora, w którym jest niestandardowe zdefiniowanie widżetów 👇:
my_progress_bar = progressbar.ProgressBar(widgets=[progressbar.SimpleProgress(), progressbar.Bar()], maxval=100)Domyślnie, "progressbar" przyjmuje 2 widżety 👇:
- Percentage (wyświetlanie postępu w formie procentowej: 0-100%),
- Bar (rysowanie paska postępu).
Na powyższym przykładzie zamieniłem "Percentage" na "SimpleProgress" (wyświetlanie postępu w formie licznika i mianownika: A z B). Więcej informacji na temat samego pakietu możesz znaleźć na stronie repozytorium GitHub ℹ️.
Pasek postępu tworzymy w pakiecie "progressbar" z użyciem konstruktora klasy "ProgressBar". Oprócz obowiązkowego parametru określającego maksymalną wartość paska, możemy też dostosować widżety, czyli poszczególne części paska postępu.
Tym sposobem przechodzimy płynnie do poznania metod 👀!
JAKIE METODY POSIADA PAKIET "PROGRESSBAR" W JĘZYKU PYTHON?
Pakiet "progressbar" składa się tylko z 3 najbardziej podstawowych metod do zarządzania paskiem postępu, a mianowicie 👇:
- start,
- update,
- finish.
Nie ustawiamy żadnego rysowania paska postępu poprzez metodę. To robimy wyłącznie na etapie konstruktora "ProgressBar" poprzez wybieranie dostępnych widżetów 🙂.
Zaczynam tłumaczyć metody 🔔!
START
"start" mówi samo za siebie - to jest przygotowanie paska postępu do rozpoczęcia działania ⏩. W praktyce, oznacza to "narysowanie" go w konsoli ustawiając postęp na 0% 🎨. Nie przyjmuje żadnych parametrów.
Tak wygląda wywołanie 👇:
my_progress_bar.start()Wywołanie "start" musi koniecznie wejść przed jakimikolwiek innymi metodami ⚠️! Inaczej, Python zgłosi błąd zdefiniowany już w środku pakietu typu "RuntimeError", a program zostanie przerwany 🚫!
Metoda "start" inicjuje pasek postępu i rysuje go w konsoli. Musi być wywołana przed pozostałymi metodami.
UPDATE
"update" oznacza ustawienie licznika, na który składa się procent ukończenia 🔥. Nie podajemy samej wartości procentowej, bo jak zauważyłeś(-aś) w części tworzenia obiektu paska postępu, możemy wprowadzić liczbę np. 32 😉.
Poniższe wywołanie 👇:
my_progress_bar.update(1)spowoduje ustawienie postępu paska w postaci 1/N, gdzie N oznacza maksymalną wartość podaną w parametrze konstruktora 😊. Czyli jak wynosi 16, to postęp będzie równy 1/16 (6%) ✅.
Metoda "update" aktualizuje procent ukończenia paska postępu, który jest przeliczany zależnie od wpisanej przez nas liczby. Parametr staje się licznikiem dla obliczanego procentu.
Gdy chcemy uzyskać wiarygodny wygląd rosnącego postępu, tę metodę trzeba wstawić w miejsce operacji wykonującej coś w czasie bądź wspierającej zdolność aktualizowania postępu ukończenia ⌚. Pod sam koniec artykułu pokażę prosty przykład symulujący taki postęp z użyciem metody "sleep" z modułu "time" 💙!
FINISH
"finish" także brzmi intuicyjnie, że łatwo się domyślić czego się spodziewać 😁. Wywołanie tej metody powoduje ustawienie postępu na 100% 🏁. Nie przyjmuje żadnych parametrów i tak wygląda jedyny sposób jej wywołania 👇:
my_progress_bar.finish()Tyle.
Metoda "finish" oznacza ustawienie procentu ukończenia do 100% i zamknięcie dalszej jego modyfikacji.
Na samą końcówkę, mała uwaga. Gdy kiedykolwiek zechcesz wypisywać coś w konsoli przy użyciu funkcji "print" w trakcie działania paska postępu, zaburzysz jego działanie i zobaczysz efekt "wcinania się" podanego łańcucha w pasek postępu 😬. Ponadto pasek nie będzie odświeżany "będąc" w tym samym miejscu, tylko pojawi się pod spodem z powodu naruszenia jego działania przez funkcję "print" ❌! Jeżeli będziesz potrzebować wprowadzenia dodatkowych elementów dla paska postępu, zdecydowanie lepiej skorzystać z dostarczanych widżetów albo spróbować stworzyć własny (więcej informacji o tym znajdziesz w repozytorium na GitHub) ☑️.
A teraz pokażę jak połączyć wszystkie te metody z modułem "time" do stworzenia najprostszego efektu rosnącego paska postępu w Pythonie 🤩!
JAK ZROBIĆ PROSTY EFEKT ROSNĄCEGO PASKA POSTĘPU W JĘZYKU PYTHON?
To jest kod ukazujący bardzo prosty efekt rosnącego paska postępu w języku Python 👇:
import time
import progressbar
max_value = 100
my_progress_bar = progressbar.ProgressBar(max_value)
my_progress_bar.start()
for value in range(1, max_value):
my_progress_bar.update(value)
time.sleep(0.05)
my_progress_bar.finish()Najpierw importujemy sobie 2 moduły 👇:
- time,
- progressbar.
Niżej znajdują się zmienne do przechowywania maksymalnej wartości jaką może przyjąć pasek postępu oraz sam pasek postępu używając konstruktora "ProgressBar". Zaraz po nim, jest wywołanie metody "start" ▶️. Następnie, tworzymy pętlę "for" do utworzenia efektu rosnącego postępu w czasie 📈. Tutaj korzystamy z zakresu ("range") od 1 do maksymalnej wartości jaką może przyjąć pasek postępu 👍.
W środku pętli są 2 wywołania 👇:
- aktualizacja postępu paska,
- "uśpienie" programu na krótki czas.
Na samym końcu wywołujemy metodę "finish", która "zamyka" działanie całego paska 🔒.
Gdy uruchomisz sobie ten program, Twoim oczom ukaże się widok paska postępu, który co chwilę rośnie do samego końca ❤️! Natomiast pamiętaj, że aby pasek naprawdę przedstawiał jakiś postęp, najlepiej jakby metoda "update" znalazła się w miejscu operacji, która faktycznie coś robi w czasie 💡.
I to jest koniec materiału ✔️. Pakiet "progressbar" w języku Python nie jest ani skomplikowany, ani "zasobożerny". Może być za to przydatny 👍. Podkreślam ponownie, że to tylko udaje postęp operacji, gdyż to my ustalamy jaką wartość ma przedstawiać.