gzip.md
1> **Источник:** https://python-all.ru/3.0/library/gzip.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `gzip` – Поддержка **gzip**-файлов89Этот модуль предоставляет простой интерфейс для сжатия и распаковки файлов, подобно тому, как это делают программы GNU **gzip** и **gunzip**.1011Сжатие данных обеспечивается модулем [`zlib`](https://python-all.ru/3.0/library/zlib.html#module-zlib).1213Модуль `gzip` предоставляет класс [`GzipFile`](https://python-all.ru/3.0/library/gzip.html#gzip.GzipFile), который смоделирован по образцу файлового объекта Python. Класс [`GzipFile`](https://python-all.ru/3.0/library/gzip.html#gzip.GzipFile) читает и записывает файлы в формате **gzip**, автоматически сжимая или распаковывая данные, так что он выглядит как обычный файловый объект.1415Обратите внимание, что дополнительные форматы файлов, которые могут быть распакованы программами **gzip** и **gunzip**, например, созданные программами **compress** и **pack**, не поддерживаются этим модулем.1617О других форматах архивов см. модули [`bz2`](https://python-all.ru/3.0/library/bz2.html#module-bz2), [`zipfile`](https://python-all.ru/3.0/library/zipfile.html#module-zipfile) и [`tarfile`](https://python-all.ru/3.0/library/tarfile.html#module-tarfile).1819Модуль определяет следующие элементы:2021#### `[gzip.GzipFile]class gzip.GzipFile([filename[, mode[, compresslevel[, fileobj]]]])`2223Конструктор класса [`GzipFile`](https://python-all.ru/3.0/library/gzip.html#gzip.GzipFile), который имитирует большинство методов файлового объекта, за исключением методов `readinto()` и `truncate()`. По крайней мере один из *fileobj* и *filename* должен иметь непустое значение.2425Новый экземпляр класса основан на *fileobj*, который может быть обычным файлом, объектом `StringIO` или любым другим объектом, имитирующим файл. По умолчанию он равен `None`, и в этом случае *filename* открывается для предоставления файлового объекта.2627Если *fileobj* не равен `None`, аргумент *filename* используется только для включения в заголовок файла **gzip**, который может содержать исходное имя несжатого файла. По умолчанию он равен имени файла *fileobj*, если оно определимо; в противном случае он равен пустой строке, и в этом случае исходное имя файла не включается в заголовок.2829Аргумент *mode* может быть одним из `'r'`, `'rb'`, `'a'`, `'ab'`, `'w'`, или `'wb'`, в зависимости от того, будет ли файл читаться или записываться. Значение по умолчанию – режим *fileobj*, если его можно определить; в противном случае – `'rb'`. Если он не задан, к режиму будет добавлен флаг 'b' для открытия файла в бинарном режиме для обеспечения переносимости между платформами.3031Аргумент *compresslevel* – целое число от `1` до `9`, управляющее уровнем сжатия; `1` – самый быстрый и даёт наименьшее сжатие, а `9` – самый медленный и даёт наибольшее сжатие. По умолчанию `9`.3233Вызов метода `close()` объекта [`GzipFile`](https://python-all.ru/3.0/library/gzip.html#gzip.GzipFile) не закрывает *fileobj*, поскольку может потребоваться добавить ещё данные после сжатых. Это также позволяет передать объект `StringIO`, открытый для записи, в качестве *fileobj*, и получить результирующий буфер в памяти с помощью метода `getvalue()` объекта `StringIO`.3435#### `[gzip.open]gzip.open(filename[, mode[, compresslevel]])`3637Это сокращение для3839`GzipFile(filename,`4041`mode,`4243`compresslevel)`4445. Аргумент4647*filename*4849обязателен;5051*mode*5253по умолчанию равен5455`'rb'`5657, а5859*compresslevel*6061по умолчанию равен6263`9`6465.6667## Примеры использования6869Пример чтения сжатого файла:7071```python72import gzip73f = gzip.open('/home/joe/file.txt.gz', 'rb')74file_content = f.read()75f.close()76```7778Пример создания сжатого файла GZIP:7980```python81import gzip82content = "Lots of content here"83f = gzip.open('/home/joe/file.txt.gz', 'wb')84f.write(content)85f.close()86```8788Пример сжатия существующего файла в формате GZIP:8990```python91import gzip92f_in = open('/home/joe/file.txt', 'rb')93f_out = gzip.open('/home/joe/file.txt.gz', 'wb')94f_out.writelines(f_in)95f_out.close()96f_in.close()97```9899> **См. также**100>101> **Модуль [`zlib`](https://python-all.ru/3.0/library/zlib.html#module-zlib)**102>103> Базовый модуль сжатия данных, необходимый для поддержки формата файлов104>105> **gzip**106>107> .108