все 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Сообщить о неточности