Spec-Zone.ru › Python 2.7

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). Этот модуль предоставляет обратную совместимость с классом BZ2File Python 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API