Как да компресирате и декомпресирате данни в Python

Днес ще видим урок, който ще се занимава с компресиране и декомпресиране на данни в Python, много лесна задача, тъй като имаме определени модули, които ще ни позволят да извършим тази работа по компресиране на данни. Библиотеките са: zlib, gzip, bz2, zipfile Y tarfile.

В целия урок ще видим примери за някои от библиотеките, за да научите как да го използвате, това е най -добрият начин да разберете как работи.

ЗабележкаТой ще използва версия 3 на Python.

Нека започнем с примерите. Всички те ще бъдат прости и лесни за разбиране.

1. Модул Zlib


Ще видим няколко примера с тази библиотека, и двата ще бъдат лесни, както казахме по -рано.

Пример 1
Имаме следния код, как можете да видите е кратък:

 import zlib as zl line = b "Това е само тест за урока, който да бъде публикуван в Solvetic" line_compress = zl.compress (line) print ("Uncompressed size% d"% len (line)) print ("Compressed size% d "% len (line_compress))
Ние компресираме оригиналния ред и показваме какво заема едното и другото, получавайки следния изход:

Сега ще видим как да декомпресираме в следния пример.

Пример 2
В следния код ще компресираме ред, ще го покажем компресиран и ще го разархивираме, за да го покажем.

 импортиране на zlib като zl ред = b "Тестване на 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"))
Използваме последния ред на кода, за да преминем от байтове към низ (използвайки utf-8 при декодиране), тъй като предпоследният ред ще показва b в началото. Резултатът от програмата е както следва:

Сега отиваме да видим друга библиотека като gzip.

2. Gzip модул


Видените по -горе примери са валидни за тази библиотека, нека видим пример 1 същият като предишния, само променяйки библиотеката.

Пример 1
Кодът, който имаме, е следният, същият като предишния, променящ zlib на gzip:

 import gzip line = b "Това е само тест за урока, който ще бъде публикуван в Solvetic" line_compress = gzip.compress (line) print ("Uncompressed size% d"% len (line)) print ("Compressed size% d" % len (line_compress))
Ако изпълним, имаме следния изход:

Компресията тежи повече от некомпресираната. Ако променим текста за по -голям и изпълним:

Сега, ако сте подобрили размера, но все пак по -добре компресирайте zlib, тогава се поставя улавяне, първото изпълнение използва zlib, а второто gzip.

Нека да преминем към следния пример, който ще бъде последният.

Пример 2
Сега ще пишем и четем от файл, кодът е следният:

 внос gzip fw = gzip.open ('test.txt.gz', 'wb') fw.write (b "Тестване на gzip") fw.close () fr = gzip.open ('test.txt.gz', ' rb ') print (fr.read (). decode ("utf-8")) fr.close ()
Можете да видите, че не се занимаваме с възможните изключения, които могат да възникнат, това е пропуснато, за да направи примера по -кратък и по -директен. Ако изпълним кода, имаме следния изход:

Видяхме някои примери за използване на библиотеките zlib и gzip, можете да се консултирате с официалната документация на Python, за да задълбочите и разгледате по -добре тези модули и тези, споменати по -горе. И в случай, че се интересувате, ви оставяме връзката към друг урок по Python: Сериализиране и десериализиране.

Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка
wave wave wave wave wave