Jak kompresować i dekompresować dane w Pythonie

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
wave wave wave wave wave