W tym artykule poruszymy sobie kolejny "pobieralny" pakiet w Pythonie (czyt. niedostępny po samej instalacji Pythona) poprzez system "pip" jakim jest pakiet "progressbar" oraz jak wygląda programowanie w jego "towarzystwie". Pozwólcie, że zaprezentuję Wam jego podstawowe działanie oraz trzy metody.
Tweet |
PAKIET "PROGRESSBAR" WYMAGA INSTALACJI
Wspomniany pakiet to mały "konsolowy" dodatek do naszych programów, w których występuje jakakolwiek reprezentacja operacji podzielonej na etapy. Innymi słowy, będziecie mogli w przyjemny sposób zaprogramować sobie pasek postępu składający się ze znaków ASCII, który w zależności od miejsca wywołania jego jednej z metod, będzie wypisywał na wyjściu aktualny "procent ukończenia" naszych operacji. To nie będzie automatycznie wykrywać liczbę instrukcji do wykonania, tylko sami podajecie mianownik jaki ma obowiązywać przy kalkulowaniu oprocentowania.
INSTALACJA PAKIETU
Jak już wspomniałem, "progressbar" nie należy do standardowej biblioteki Pythona, zatem trzeba zainstalować sobie ten pakiet ręcznie poprzez system zarządzania pakietami o nazwie "pip". Kierujemy się do wiersza poleceń ("cmd") uruchamiając go prewencyjnie z uprawnieniami administratora. Po wpisaniu poniższego polecenia umieszczonego w ramce:
pip install progressbar
"pip" zajmie się instalacją. Pakiet "progressbar" jest leciutki, zatem cały proces zajmie góra kilkanaście sekund ;).
Komunikat o poprawności instalacji pakietu "progressbar" w systemie "pip".
Komunikat o wyżej wymienionej treści da 100% pewności, że instalację mamy za sobą. W przeciwieństwie do wcześniej omawianego "pydub", nie spotkałem się z żadnymi dodatkowymi nieprzyjemnościami.
WYKORZYSTYWANIE W PROGRAMACH
Zaczniemy od tworzenia obiektu. Pakiet "progressbar" zawiera w sobie utworzoną klasę "ProgressBar". W związku z tym, potrzebny jest import modułu. Oto niezbędna linijka jako jedna z dróg importowania:
from progressbar import ProgressBar
Pod spodem, definiujemy sobie zmienną, a po znaku przypisania wywołujemy konstruktor "ProgressBar" podając parametr razem z nazwą "maxval", gdyż nie jest on pierwszy w kolejności parametrów formalnych:
progress_bar = ProgressBar(maxval = N)
Za N podstawiamy dowolną liczbę całkowitą przy czym zaznaczam, dodatnią. Od tej pory, można poznawać metody.
start()
Metoda, od której zaczyna się monitorowanie postępu. Nie przyjmuje żadnych parametrów, nie zwraca żadnej wartości. Jedyny widoczny efekt jaki pozostawia, to narysowanie pustego paska postępu z łańcuchem znaków "0%". Jej wywołanie jest OBOWIĄZKOWE przed wywołaniem którejkolwiek innej metody dotyczącej klasy "ProgressBar".
Metoda "start" musi być pierwszą wywoływaną poprzez pakiet "progressbar". Inicjuje monitorowanie postępu i wypisuje najprostszą reprezentację paska postępu ze znaków ASCII.
update()
"update" jak sama nazwa wskazuje, "aktualizuje" nasz pasek postępu oczekując od nas wpisania liczby, która stanie się licznikiem w obliczaniu procentu. Aktualizacja robi się w sposób "sztuczny", ponieważ to my ustalamy jaką wartość ma teraz przyjąć licznik. Nie ma żadnego systemu wykrywania przez sam obiekt albo jak mogliście pomyśleć, jakiegoś "podpinania" metody do obiektu jak przy tzw. "listenerze".
Metoda "update" umożliwia wyświetlenie częściowo wypełnionego paska postępu którego procent zależy od wpisanej przez nas liczby. Staje się ona licznikiem dla obliczanego procentu.
finish()
Zakończenie monitorowania pozwala przeprowadzić metoda "finish". Nie przyjmując żadnych parametrów do siebie, wypisuje na wyjściu wypełniony pasek postępu celem zasygnalizowania zakończenia operacji. Podkreślam ponownie, to tylko symuluje zakończenie operacji, gdyż to my o tym decydujemy. Możemy równie dobrze wywołać "finish" zaraz po "start", a wszelkie instrukcje mogą lecieć "niewidoczne". Możliwe, że dlatego pakiet "progressbar" jest taki "chudy", ponieważ nie jest zaprogramowany na jakieś automatyczne wykrywanie "logiki" naszego programowania :).
Metoda "finish" jest sygnałem dla naszego obiektu klasy "ProgressBar", że uznajemy naszą operację za zakończoną i żeby postęp wskoczył na 100%.
Na samą końcówkę, mała uwaga ode mnie. Żadna z metod nie powoduje rozpoczęcia pisania czegokolwiek od nowej linii! Więc po użyciu funkcji "print", nie zdziwcie się jak zobaczycie poharatane teksty wrzynające się w graficzny pasek. Musicie już sami od siebie dorzucić sekwencję sterującą odpowiedzialną za pisanie w nowej linii ('\n').
I na tym skończymy. Pakiet "progressbar" nie jest ani skomplikowany, ani zasobożerny. Jest za to przydatny. Trzy w jednym. "start", "update" i "finish". Oto cała wiedza jaka jest potrzebna do obsługi pakietu :D.