Из документов для Python3
Gzip существующий файл
import gzip
import shutil
with open('file.txt', 'rb') as f_in:
with gzip.open('file.txt.gz', 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)
# or because I hate nested with statements
import gzip
import shutil
from contextlib import ExitStack
with ExitStack() as stack:
f_in = stack.enter_context(open('file.txt', 'rb'))
f_out = stack.enter_context(gzip.open('file.txt.gz', 'wb'))
shutil.copyfileobj(f_in, f_out)
Создание нового файла gzip:
import gzip
content = b"Lots of content here"
with gzip.open("file.txt.gz", "wb") as f:
f.write(content)
Обратите внимание на тот факт, что содержимое преобразуется в байты
Другой метод, если вы не создаете содержимое в виде строкового / байтового литерала, как в приведенном выше примере, будет
import gzip
# get content as a string from somewhere else in the code
with gzip.open("file.txt.gz", "wb") as f:
f.write(content.encode("utf-8"))
См. этот вопрос SO для обсуждения других методов кодирования.