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

{title}

Сегодня мы увидим учебник, который будет касаться сжатия и распаковки данных в Python, очень простая задача, поскольку у нас есть определенные модули, которые позволят нам выполнить эту задачу по сжатию данных. Библиотеки: zlib, gzip, bz2, zipfile и tarfile .

В этом уроке мы увидим примеры некоторых библиотек, чтобы узнать, как они используются, это лучший способ понять, как это работает.

примечание

Это будет использовать Python версии 3.

Давайте начнем с примеров. Все они будут просты и легки для понимания.

1. модуль zlib


Давайте посмотрим пару примеров с этой библиотекой, оба будут просты, как мы уже говорили.

Пример 1
У нас есть следующий код, как вы можете видеть это кратко:

 import zlib as zl line = b "Это всего лишь тест для учебника, который будет опубликован в Solvetic" line_compress = zl.compress (line) print ("Несжатый размер% d"% len (line)) print (" Сжатый размер% d "% len (line_compress)) 
Мы сжимаем исходную строку и показываем, что она занимает снова и снова, получая следующий вывод:

{title}

Теперь давайте посмотрим, как распаковать в следующем примере.

Пример 2
В следующем коде мы сжимаем строку, показываем ее сжатой и распаковываем, чтобы отобразить ее.

 импортировать zlib как zl 
Последняя строка кода используется для перехода от байтов к строке (с использованием utf-8 в декодировании), так как предпоследняя строка покажет b в начале. Вывод программы следующий:

{title}

Теперь мы переходим к другому книжному магазину, например, к gzip.

2. Модуль Gzip


Приведенные выше примеры действительны для этой библиотеки, давайте посмотрим на пример 1, как и предыдущий, просто изменив библиотеку.

Пример 1
Код, который у нас есть, такой же, как и предыдущий, заменяющий zlib на gzip:

 import gzip line = b "Это всего лишь тест для учебника, который должен быть опубликован в Solvetic" line_compress = gzip.compress (line) print ("Несжатый размер% d"% len (line)) print ("Сжатый размер % d "% len (line_compress)) 
Если мы выполним, у нас будет следующий вывод:

{title}

Он весит больше сжатия, чем тот, который не сжат. Если мы изменим текст на больший и выполним:

{title}

Теперь, если вы улучшили размер, но продолжаете сжимать zlib лучше, тогда производится захват, при первом запуске используется zlib, а во втором gzip.

{title}

Давайте рассмотрим следующий пример, который будет последним.

Пример 2
Теперь мы будем писать и читать из файла, код выглядит следующим образом:

 import gzip fw = gzip.open ('test.txt.gz', 'wb') fw.write (b "Testing gzip") fw.close () fr = gzip.open ('test.txt.gz', ' rb ') print (fr.read (). decode ("utf-8")) fr.close () 
Вы можете оценить, что мы не имеем дело с возможными исключениями, которые могут возникнуть, это было опущено, так что пример короче и более прямой. Если мы выполним код, у нас будет следующий вывод:

{title}

Мы видели несколько примеров использования библиотек zlib и gzip, вы можете обратиться к официальной документации Python для углубления и просмотра этих модулей и упомянутых выше. И если вам интересно, мы оставляем вам ссылку на другой учебник по Python: сериализация и десериализация.

  • 0