Содержание страницы
bz2 – Сжатие, совместимое с bzip2¶bz2 – Compression compatible with bzip2
Этот модуль предоставляет комплексный интерфейс для библиотеки сжатия bz2. Он реализует полный файловый интерфейс, функции одноразового сжатия/распаковки и типы для последовательного сжатия/распаковки.
Другие форматы архивов описаны в модулях gzip, zipfile и tarfile.
Ниже приведена сводка возможностей модуля bz2:
- BZ2File реализует полный файловый интерфейс, включая readline(), readlines(), writelines(), seek() и т.д.;
- BZ2File реализует эмулированную поддержку seek();
- BZ2File class implements universal newline support;
- BZ2File предлагает оптимизированную итерацию по строкам, используя алгоритм опережающего чтения, заимствованный из файловых объектов;
- Sequential (de)compression supported by BZ2Compressor and BZ2Decompressor classes;
- One-shot (de)compression supported by compress() and decompress() functions;
- Потокобезопасность использует индивидуальный механизм блокировки.
Сжатие и распаковка файлов¶(De)compression of files
Handling of compressed files is offered by the BZ2File class.
- 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.
- close()¶
- Закрывает файл. Устанавливает атрибут данных closed в true. Закрытый файл нельзя использовать для дальнейших операций ввода-вывода. close() может быть вызван несколько раз без ошибки.
- read([size])¶
- Читает не более size несжатых байт, возвращаемых в виде строки. Если аргумент size отрицательный или опущен, читает до достижения EOF.
- readline([size])¶
- Возвращает следующую строку из файла в виде строки, сохраняя символ новой строки. Неотрицательный аргумент size ограничивает максимальное количество возвращаемых байт (при этом может быть возвращена неполная строка). Возвращает пустую строку при EOF.
- readlines([size])¶
- Возвращает список прочитанных строк. Необязательный аргумент size, если задан, является приблизительной границей общего количества байт в возвращаемых строках.
- 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() для каждой строки.
Последовательное сжатие/распаковка¶Sequential (de)compression
Последовательное сжатие и распаковка выполняется с помощью классов BZ2Compressor и BZ2Decompressor.
- class bz2.BZ2Compressor([compresslevel])¶
Создаёт новый объект компрессора. Этот объект можно использовать для последовательного сжатия данных. Если необходимо сжать данные за один раз, используйте функцию compress(). Параметр compresslevel, если указан, должен быть числом от 1 до 9; по умолчанию 9.
- compress(data)¶
- Передаёт дополнительные данные объекту компрессора. Он будет возвращать фрагменты сжатых данных по мере возможности. После завершения передачи данных для сжатия вызовите метод flush(), чтобы завершить процесс сжатия и вернуть то, что осталось во внутренних буферах.
- flush()¶
- Завершает процесс сжатия и возвращает то, что осталось во внутренних буферах. После вызова этого метода нельзя использовать объект компрессора.
- class bz2.BZ2Decompressor¶
Создаёт новый объект декомпрессора. Этот объект можно использовать для последовательной распаковки данных. Если необходимо распаковать данные за один раз, используйте функцию decompress().
- decompress(data)¶
- Передаёт дополнительные данные объекту декомпрессора. Он будет возвращать фрагменты распакованных данных по мере возможности. При попытке распаковать данные после обнаружения конца потока будет возбуждено исключение EOFError. Если после конца потока были обнаружены какие-либо данные, они будут проигнорированы и сохранены в атрибуте unused_data.
Одноразовое (де)сжатие¶One-shot (de)compression
Сжатие и распаковка за один раз обеспечиваются функциями compress() и decompress().
- bz2.compress(data[, compresslevel])¶
- Сжимает data за один раз. Если требуется последовательное сжатие данных, используйте экземпляр BZ2Compressor. Параметр compresslevel, если указан, должен быть числом от 1 до 9; по умолчанию 9.
- bz2.decompress(data)¶
- Распаковывает data за один раз. Если требуется последовательная распаковка данных, используйте экземпляр BZ2Decompressor.