Python Glossary English

все Python 3gzipфункция

gzip.open()

файлы gzip

Открывает файл .gz для чтения или записи; в двоичном режиме работает с bytes, в 'rt'/'wt' — с текстом.

Синтаксис

gzip.open(filename, mode='rb', compresslevel=6, encoding=None, errors=None, newline=None)

Режим по умолчанию — 'rb', а не 'r' как у open(): read() вернёт bytes, и строковые операции упадут. Для текста режим указывают явно — 'rt' или 'wt' — и вместе с ним encoding, иначе возьмётся кодировка по умолчанию (до 3.15 — кодировка локали). 'w' тоже двоичный: запись строки даёт TypeError. Файл, оказавшийся не gzip, обнаружится не в open(), а на первом чтении — gzip.BadGzipFile. С 3.15 уровень сжатия по умолчанию — 6, а не 9: сжатие быстрее, архив чуть больше; нужен прежний размер — передайте compresslevel=9 явно.

Примеры

import gzip
with gzip.open('log.txt.gz', 'wt', encoding='utf-8') as f:
    f.write('строка лога\n')
with gzip.open('log.txt.gz') as f:
    print(type(f.read()).__name__)  # → bytes — по умолчанию 'rb'
with gzip.open('log.txt.gz', 'rt', encoding='utf-8') as f:
    print(f.read().strip())  # → строка лога
import gzip
try:
    with gzip.open('data.gz', 'w') as f:
        f.write('текст')
except TypeError as e:
    print(type(e).__name__)  # → TypeError — 'w' значит 'wb'

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности