> **Источник:** https://python-all.ru/3.0/library/gzip.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# `gzip` – Поддержка **gzip**-файлов

Этот модуль предоставляет простой интерфейс для сжатия и распаковки файлов, подобно тому, как это делают программы GNU **gzip** и **gunzip**.

Сжатие данных обеспечивается модулем [`zlib`](https://python-all.ru/3.0/library/zlib.html#module-zlib).

Модуль `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**, автоматически сжимая или распаковывая данные, так что он выглядит как обычный файловый объект.

Обратите внимание, что дополнительные форматы файлов, которые могут быть распакованы программами **gzip** и **gunzip**, например, созданные программами **compress** и **pack**, не поддерживаются этим модулем.

О других форматах архивов см. модули [`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).

Модуль определяет следующие элементы:

#### `[gzip.GzipFile]class gzip.GzipFile([filename[, mode[, compresslevel[, fileobj]]]])`

Конструктор класса [`GzipFile`](https://python-all.ru/3.0/library/gzip.html#gzip.GzipFile), который имитирует большинство методов файлового объекта, за исключением методов `readinto()` и `truncate()`. По крайней мере один из *fileobj* и *filename* должен иметь непустое значение.

Новый экземпляр класса основан на *fileobj*, который может быть обычным файлом, объектом `StringIO` или любым другим объектом, имитирующим файл. По умолчанию он равен `None`, и в этом случае *filename* открывается для предоставления файлового объекта.

Если *fileobj* не равен `None`, аргумент *filename* используется только для включения в заголовок файла **gzip**, который может содержать исходное имя несжатого файла. По умолчанию он равен имени файла *fileobj*, если оно определимо; в противном случае он равен пустой строке, и в этом случае исходное имя файла не включается в заголовок.

Аргумент *mode* может быть одним из `'r'`, `'rb'`, `'a'`, `'ab'`, `'w'`, или `'wb'`, в зависимости от того, будет ли файл читаться или записываться. Значение по умолчанию – режим *fileobj*, если его можно определить; в противном случае – `'rb'`. Если он не задан, к режиму будет добавлен флаг 'b' для открытия файла в бинарном режиме для обеспечения переносимости между платформами.

Аргумент *compresslevel* – целое число от `1` до `9`, управляющее уровнем сжатия; `1` – самый быстрый и даёт наименьшее сжатие, а `9` – самый медленный и даёт наибольшее сжатие. По умолчанию `9`.

Вызов метода `close()` объекта [`GzipFile`](https://python-all.ru/3.0/library/gzip.html#gzip.GzipFile) не закрывает *fileobj*, поскольку может потребоваться добавить ещё данные после сжатых. Это также позволяет передать объект `StringIO`, открытый для записи, в качестве *fileobj*, и получить результирующий буфер в памяти с помощью метода `getvalue()` объекта `StringIO`.

#### `[gzip.open]gzip.open(filename[, mode[, compresslevel]])`

Это сокращение для

`GzipFile(filename,`

`mode,`

`compresslevel)`

. Аргумент

*filename*

обязателен;

*mode*

по умолчанию равен

`'rb'`

, а

*compresslevel*

по умолчанию равен

`9`

.

## Примеры использования

Пример чтения сжатого файла:

```python
import gzip
f = gzip.open('/home/joe/file.txt.gz', 'rb')
file_content = f.read()
f.close()
```

Пример создания сжатого файла GZIP:

```python
import gzip
content = "Lots of content here"
f = gzip.open('/home/joe/file.txt.gz', 'wb')
f.write(content)
f.close()
```

Пример сжатия существующего файла в формате GZIP:

```python
import gzip
f_in = open('/home/joe/file.txt', 'rb')
f_out = gzip.open('/home/joe/file.txt.gz', 'wb')
f_out.writelines(f_in)
f_out.close()
f_in.close()
```

> **См. также**
>
> **Модуль [`zlib`](https://python-all.ru/3.0/library/zlib.html#module-zlib)**
>
> Базовый модуль сжатия данных, необходимый для поддержки формата файлов
>
> **gzip**
>
> .
