Hur man komprimerar och dekomprimerar data i Python

Innehållsförteckning

Idag ska vi se en handledning som kommer att hantera datakomprimering och dekomprimering i Python, en mycket enkel uppgif.webpt, eftersom vi har vissa moduler som gör att vi kan utföra detta arbete med att komprimera data. Biblioteken är: zlib, gzip, bz2, Zip fil Y tarfile.

Under hela handledningen kommer vi att se exempel på några av biblioteken för att lära sig hur man använder det, det är det bästa sättet att förstå hur det fungerar.

NoteraDet kommer att använda version 3 av Python.

Låt oss börja med exemplen. Alla kommer att vara enkla och lätta att förstå.

1. Zlib -modul


Vi kommer att se ett par exempel med detta bibliotek, båda kommer att vara enkla som vi sa tidigare.

Exempel 1
Vi har följande kod, hur du kan se är kort:

 importera zlib som zl line = b "Detta är bara ett test för självstudien att publiceras i Solvetic" line_compress = zl.compress (line) print ("Okomprimerad storlek% d"% len (rad)) print ("Komprimerad storlek% d "% len (line_compress))
Vi komprimerar den ursprungliga raden och visar vad den ena och den andra upptar och får följande utdata:

Nu ska vi se hur man dekomprimerar i följande exempel.

Exempel 2
I följande kod kommer vi att komprimera en rad, visa den komprimerad och packa upp den för att visa den.

 importera zlib som zl line = b "Testa Python zlib" line_compress = zl.compress (line) print (line_compress) line_decompress = zl.decompress (line_compress) print (line_decompress) print (line_decompress.decode ("utf-8")))
Vi använder den sista raden i koden för att gå från byte till sträng (använder utf-8 vid avkodning), eftersom den näst sista raden visar ett b i början. Utmatningen av programmet är följande:

Vi går nu för att se ett annat bibliotek som gzip.

2. Gzip -modul


Exemplen som visas ovan är giltiga för detta bibliotek, låt oss se exempel 1 samma som det föregående, bara ändra biblioteket.

Exempel 1
Koden vi har är följande, samma som den föregående, ändrar zlib till gzip:

 import gzip line = b "Detta är bara ett test för självstudien att publiceras i Solvetic" line_compress = gzip.compress (line) print ("Okomprimerad storlek% d"% len (rad)) print ("Komprimerad storlek% d" % len (line_compress))
Om vi ​​kör har vi följande utdata:

Komprimering väger mer än okomprimerad. Om vi ​​ändrar texten för en större och kör:

Om du nu har förbättrat storleken, men ändå bättre komprimerat zlib, läggs en capture, den första körningen använder zlib och den andra gzip.

Låt oss gå till följande exempel, vilket blir det sista.

Exempel 2
Nu ska vi skriva och läsa från en fil, koden är följande:

 importera gzip fw = gzip.open ('test.txt.gz', 'wb') fw.write (b "Testar gzip") fw.close () fr = gzip.open ('test.txt.gz', ' rb ') print (fr.read (). decode ("utf-8")) fr.close ()
Du kan se att vi inte hanterar de möjliga undantagen som kan uppstå, detta har utelämnats för att göra exemplet kortare och mer direkt. Om vi ​​kör koden har vi följande utdata:

Vi har sett några exempel på användning av zlib- och gzip -biblioteken. Du kan konsultera den officiella Python -dokumentationen för att fördjupa och bättre se dessa moduler och de som nämns ovan. Och om du är intresserad lämnar vi länken till en annan handledning om Python: Serialize and deserialize.

Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng
wave wave wave wave wave