Открыть сжатый gzip файл для чтения/записи.
Синтаксис:
import gzip
fg = gzip.open(filename, mode='rb', compresslevel=9, \
encoding=None, errors=None, \
newline=None)
Параметры:
filename
- имя сжатого файла,mode='rb'
- режим чтения/записи gzip
,compresslevel=9
- int
, уровень сжатия,encoding=None
- кодировка для текстового режима,errors=None
- ообработчик ошибок кодировки для текстового режима,newline=None
- окончания строк для текстового режима.
Возвращаемое значение:
Описание:
Функция
open()
модуля
gzip
открывает
filename
сжатый
gzip
файл в двоичном или текстовом режиме для чтения или записи, возвращая
объект файла.
Аргумент
filename
может представлять собой фактическое имя файла - объект
str
или
bytes
или существующий
объект файла для чтения или записи.
Аргументом mode
может быть:
- для двоичного режима любой из
'r'
, 'rb'
, 'a'
, 'ab'
, 'w'
, 'wb'
, 'x'
или 'xb'
; - для текстового режима
'rt'
, 'at'
, 'wt'
или 'xt'
. - по умолчанию режим
mode
равен 'rb'
.
Для двоичного режима эта функция эквивалентна конструктору класса gzip.GzipFile()
: GzipFile(filename, mode, compresslevel)
. В этом случае аргументы encoding
, errors
and newline
не должны предоставляться.
Для текстового режима создается объект
GzipFile
, который оборачивается в экземпляр
io.TextIOWrapper
с указанным кодировки
encoding
, обработчика ошибок
errors
и окончанием(ями) строки
newline
.
Примеры использования:
Создаем сжатый файл GZIP:
import gzip, os
# подготовим данные
text = 'Привет docs-python.ru '
data = []
for _ in range(50):
data.append(text * 25)
with gzip.open('file.txt.gz', 'wt') as fp:
fp.write('\n\n'.join(data))
>>> os.system('file file.txt.gz')
# file.txt.gz: gzip compressed data, was "file.txt",
# last modified: Wed May 20 14:10:47 2020,
# max compression
Прочитаем сжатый GZIP файл file.txt.gz
, выведем первые 22 символа и за одно распакуем:
import gzip
with gzip.open('file.txt.gz', 'rb') as fr, \
open('file.txt', 'wb') as fw:
bytes_data = fr.read()
fw.write(bytes_data)
# если открыть файл 'file.txt.gz' в текстовом
# режиме 'rt', декодировать данные не нужно
>>> data = bytes_data.decode('utf-8')
>>> print(data[:22])
# Привет docs-python.ru Привет
Сжимаем существующий файл:
import gzip, shutil, os
with open('file.txt', 'rb') as f_in:
with gzip.open('sample-file.txt.gz', 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)
>>> os.system('file sample-file.txt.gz')
# sample-file.txt.gz: gzip compressed data, was "sample-file.txt",
# last modified: Wed May 20 14:24:00 2020, max compression
>>> os.path.getsize('file.txt')
# 27598
>>> os.path.getsize('sample-file.txt.gz')
# 195