bz2 — Сжатие, совместимое с bzip2
Новое в версии 2.3.
Этот модуль предоставляет комплексный интерфейс для библиотеки сжатия bz2. Он реализует полный файловый интерфейс, одноразовые (распаковывающие) функции сжатия и типы для последовательного (распаковывающего) сжатия.
Вот краткое описание возможностей модуля bz2:
-
BZ2Fileкласс реализует полный файловый интерфейс, включаяreadline(),readlines(),writelines(),seek()и т. д.; -
BZ2Fileкласс реализует эмулированную поддержкуseek(); -
BZ2Fileкласс реализует универсальную поддержку новых строк; -
BZ2Fileкласс предлагает оптимизированную итерацию по строкам с использованием алгоритма предварительной загрузки, заимствованного у файловых объектов; - Последовательное (распаковывающее) сжатие поддерживается классами
BZ2CompressorиBZ2Decompressor; - Одноразовое (распаковывающее) сжатие поддерживается функциями
compress()иdecompress(); - Безопасность потоков обеспечивается отдельным механизмом блокировки.
Примечание
Обработка файлов bzip2 с несколькими потоками не поддерживается. Модули, такие как bz2file, позволяют преодолеть эту проблему.
1. (Распаковывающее) сжатие файлов
Обработка сжатых файлов предлагается классом BZ2File.
-
class bz2.BZ2File(filename[, mode[, buffering[, compresslevel]]]) -
Открывает файл bz2. Режим может быть либо
'r'или'w', для чтения (по умолчанию) или записи. При открытии для записи файл будет создан, если он не существует, и обнулен в противном случае. Если задан buffering,0означает отсутствие буферизации, а более крупные числа задают размер буфера; по умолчанию значение0. Если задан compresslevel, он должен быть числом между1и9; по умолчанию9. Добавьте'U'в режим, чтобы открыть файл для чтения в режиме универсальных новых строк. Любая строка в файле-источнике будет восприниматься как'\n'в Python. Также открытый таким образом файл получает атрибутnewlines; значение этого атрибута — одно изNone(новая строка ещё не прочитана),'\r','\n','\r\n'или кортеж, содержащий все типы новых строк, которые были замечены. Универсальные новые строки доступны только при чтении. Экземпляры поддерживают итерацию таким же образом, как и обычные экземплярыfile.BZ2Fileподдерживает операторwith.Изменено в версии 2.7: Добавлена поддержка оператора
with.Примечание
Этот класс не поддерживает входные файлы, содержащие несколько потоков (такие как те, которые создаются инструментом pbzip2). При чтении такого входного файла доступен только первый поток. Если вам нужна поддержка файлов с несколькими потоками, рассмотрите использование стороннего модуля
bz2file(доступен на PyPI). Этот модуль предоставляет обратную совместимость с классомBZ2FilePython 3.3, который поддерживает файлы с несколькими потоками.-
close() -
Закрывает файл. Устанавливает атрибут данных
closedв значение true. Закрытый файл нельзя использовать для дальнейших операций ввода-вывода.close()можно вызывать более одного раза без ошибки.
-
read([size]) -
Прочитать не более size несжатых байтов, возвращает строку. Если аргумент size отрицательный или опущен, читает до достижения конца файла.
-
readline([size]) -
Возвращает следующую строку из файла в виде строки, сохраняя новую строку. Аргумент size, если он задан и неотрицателен, ограничивает максимальное количество возвращаемых байтов (может быть возвращена неполная строка). В конце файла возвращает пустую строку.
-
readlines([size]) -
Возвращает список прочитанных строк. Необязательный аргумент size, если задан, является приблизительной границей общего количества байтов в возвращённых строках.
-
xreadlines() -
Для обратной совместимости. Объекты
BZ2Fileтеперь включают оптимизации производительности, ранее реализованные в модулеxreadlines.Устарело начиная с версии 2.3: Существует только для совместимости с методом с таким же именем для объектов
file, который устарел. Используйтеfor line in fileвместо этого.
-
seek(offset[, whence]) -
Переместить в новое положение файла. Аргумент offset — это количество байтов. Необязательный аргумент whence по умолчанию равен
os.SEEK_SETили0(смещение от начала файла; смещение должно быть>= 0); другие значения —os.SEEK_CURили1(смещение относительно текущего положения; смещение может быть положительным или отрицательным) иos.SEEK_ENDили2(смещение относительно конца файла; смещение обычно отрицательное, хотя многие платформы позволяют перемещаться за пределы конца файла).Обратите внимание, что перемещение по файлам bz2 эмулируется, и в зависимости от параметров операция может быть очень медленной.
-
tell() -
Возвращает текущее положение файла, целое число (может быть целым числом большого размера).
-
write(data) -
Записать строку data в файл. Обратите внимание, что из-за буферизации может потребоваться
close()перед тем, как данные, записанные в файл, отобразятся на диске.
-
writelines(sequence_of_strings) -
Записать последовательность строк в файл. Обратите внимание, что новые строки не добавляются. Последовательность может быть любым итерируемым объектом, производящим строки. Это эквивалентно вызову write() для каждой строки.
-
2. Последовательное (распаковывающее) сжатие
Последовательное сжатие и распаковку выполняют классы BZ2Compressor и BZ2Decompressor.
-
class bz2.BZ2Compressor([compresslevel]) -
Создаёт новый объект сжатия. Этот объект можно использовать для последовательного сжатия данных. Если вы хотите сжать данные за один раз, используйте функцию
compress()вместо этого. Параметр compresslevel, если задан, должен быть числом между1и9; по умолчанию9.-
compress(data) -
Предоставление дополнительных данных объекту сжатия. Он будет возвращать фрагменты сжатых данных, когда это возможно. После завершения предоставления данных для сжатия вызовите метод
flush(), чтобы завершить процесс сжатия и вернуть оставшиеся в внутренних буферах данные.
-
flush() -
Завершить процесс сжатия и вернуть оставшиеся в внутренних буферах данные. Вы не должны использовать объект сжатия после вызова этого метода.
-
-
class bz2.BZ2Decompressor -
Создаёт новый объект распаковки. Этот объект можно использовать для последовательной распаковки данных. Если вы хотите распаковать данные за один раз, используйте функцию
decompress()вместо этого.-
decompress(data) -
Предоставление дополнительных данных объекту распаковки. Он будет возвращать фрагменты распакованных данных, когда это возможно. Если вы попытаетесь распаковать данные после обнаружения конца потока, будет поднято исключение
EOFError. Если после конца потока были найдены какие-либо данные, они будут проигнорированы и сохранены в атрибутеunused_data.
-
3. Одноразовое (распаковывающее) сжатие
Одноразовое сжатие и распаковку обеспечивает функция compress() и функция decompress().
-
bz2.compress(data[, compresslevel]) -
Сжимает данные в один приём. Если необходимо последовательно сжимать данные, используйте экземпляр
BZ2Compressorвместо этого. Параметр compresslevel, если задан, должен быть числом от1до9; по умолчанию значение9.
-
bz2.decompress(data) -
Распаковывает данные в один приём. Если необходимо последовательно распаковывать данные, используйте экземпляр
BZ2Decompressorвместо этого.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/bz2.html