Dzisiaj zobaczymy samouczek, który zajmie się kompresja i dekompresja danych w Pythonie, bardzo łatwe zadanie, ponieważ mamy pewne moduły, które pozwolą nam wykonać tę pracę polegającą na kompresji danych. Biblioteki to: zlib, gzip, bz2, plik zip Tak plik tar.
W samouczku zobaczymy przykłady niektórych bibliotek, aby dowiedzieć się, jak z niego korzystać, jest to najlepszy sposób na zrozumienie, jak to działa.
NotatkaBędzie korzystać z wersji 3 Pythona.
Zacznijmy od przykładów. Wszystkie będą proste i łatwe do zrozumienia.
1. Moduł Zlib
Zobaczymy kilka przykładów z tą biblioteką, oba będą łatwe, jak powiedzieliśmy wcześniej.
Przykład 1
Mamy następujący kod, jak widać, jest krótki:
import zlib as zl line = b "To jest tylko test dla samouczka do opublikowania w Solvetic" line_compress = zl.compress (line) print ("Rozmiar nieskompresowany% d"% len (linia)) print (" Rozmiar skompresowany% d "% dł. (line_compress))Kompresujemy oryginalną linię i pokazujemy, co zajmuje jedna i druga, uzyskując następujący wynik:
Teraz zobaczymy, jak dekompresować w poniższym przykładzie.
Przykład 2
W poniższym kodzie zamierzamy skompresować linię, pokazać ją skompresowaną i rozpakować, aby ją pokazać.
import zlib jako zl line = b "Testowanie Pythona zlib" line_compress = zl.compress (line) print (line_compress) line_decompress = zl.decompress (line_compress) print (line_decompress) print (line_decompress.decode ("utf-8"))Używamy ostatniego wiersza kodu, aby przejść od bajtów do łańcucha (używając utf-8 w dekodowaniu), ponieważ przedostatni wiersz pokaże b na początku. Wyjście programu wygląda następująco:
Przejdźmy teraz do innej biblioteki, takiej jak gzip.
2. Moduł gzip
Powyższe przykłady dotyczą tej biblioteki, zobaczmy przykład 1 taki sam jak poprzedni, zmieniając tylko bibliotekę.
Przykład 1
Mamy następujący kod, taki sam jak poprzedni, zmieniając zlib na gzip:
import gzip line = b "To jest tylko test dla samouczka do opublikowania w Solvetic" line_compress = gzip.compress (line) print ("Rozmiar nieskompresowany% d"% len (linia)) print ("Rozmiar skompresowany % d " % len (line_compress))Jeśli wykonamy, mamy następujące wyjście:
Kompresja waży więcej niż nieskompresowana. Jeśli zmienimy tekst na większy i wykonamy:
Teraz, jeśli poprawiłeś rozmiar, ale jeszcze lepiej skompresowałeś zlib, wtedy przechwytywanie jest umieszczane, pierwsze wykonanie używa zlib, a drugie gzip.
Przejdźmy do poniższego przykładu, który będzie ostatnim.
Przykład 2
Teraz będziemy pisać i czytać z pliku, kod wygląda następująco:
import gzip fw = gzip.open ('test.txt.gz', 'wb') fw.write (b "Testowanie gzip") fw.close () fr = gzip.open ('test.txt.gz', ' rb ') print (fr.read (). decode ("utf-8")) fr.close ()Widać, że nie zajmujemy się możliwymi wyjątkami, które mogą się pojawić, zostało to pominięte, aby przykład był krótszy i bardziej bezpośredni. Jeśli uruchomimy kod, otrzymamy następujące wyjście:
Widzieliśmy kilka przykładów użycia bibliotek zlib i gzip, możesz zapoznać się z oficjalną dokumentacją Pythona, aby pogłębić i lepiej zobaczyć te moduły i te wymienione powyżej. A jeśli jesteś zainteresowany, zostawiamy Ci link do innego samouczka na temat Pythona: Serializuj i deserializuj.
Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt