bz2.md
1> **Источник:** https://python-all.ru/3.0/library/bz2.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `bz2` – Сжатие, совместимое с **bzip2**89Этот модуль предоставляет комплексный интерфейс для библиотеки сжатия bz2. Он реализует полный файловый интерфейс, функции одноразового сжатия/распаковки и типы для последовательного сжатия/распаковки.1011Другие форматы архивов описаны в модулях [`gzip`](https://python-all.ru/3.0/library/gzip.html#module-gzip), [`zipfile`](https://python-all.ru/3.0/library/zipfile.html#module-zipfile) и [`tarfile`](https://python-all.ru/3.0/library/tarfile.html#module-tarfile).1213Ниже приведена сводка возможностей модуля bz2:1415- [`BZ2File`](https://python-all.ru/3.0/library/bz2.html#bz2.BZ2File) реализует полный файловый интерфейс, включая `readline()`, `readlines()`, `writelines()`, `seek()` и т.д.;16- [`BZ2File`](https://python-all.ru/3.0/library/bz2.html#bz2.BZ2File) реализует эмулированную поддержку `seek()`;17- [`BZ2File`](https://python-all.ru/3.0/library/bz2.html#bz2.BZ2File) class implements universal newline support;18- [`BZ2File`](https://python-all.ru/3.0/library/bz2.html#bz2.BZ2File) предлагает оптимизированную итерацию по строкам, используя алгоритм опережающего чтения, заимствованный из файловых объектов;19- Sequential (de)compression supported by [`BZ2Compressor`](https://python-all.ru/3.0/library/bz2.html#bz2.BZ2Compressor) and [`BZ2Decompressor`](https://python-all.ru/3.0/library/bz2.html#bz2.BZ2Decompressor) classes;20- One-shot (de)compression supported by [`compress()`](https://python-all.ru/3.0/library/bz2.html#bz2.compress) and [`decompress()`](https://python-all.ru/3.0/library/bz2.html#bz2.decompress) functions;21- Потокобезопасность использует индивидуальный механизм блокировки.2223## Сжатие и распаковка файлов2425Handling of compressed files is offered by the [`BZ2File`](https://python-all.ru/3.0/library/bz2.html#bz2.BZ2File) class.2627#### `[bz2.BZ2File]class bz2.BZ2File(filename[, mode[, buffering[, compresslevel]]])`2829Открывает bz2-файл. Режим может быть `'r'` или `'w'` для чтения (по умолчанию) или записи. При открытии для записи файл будет создан, если его не существует, в противном случае он будет усечён. Если задан *buffering*, то `0` означает отсутствие буферизации, а бо́льшие числа задают размер буфера; по умолчанию `0`. Если задан *compresslevel*, это должно быть число от `1` до `9`; по умолчанию `9`. Добавьте `'U'` к режиму, чтобы открыть файл для ввода с поддержкой универсальных символов перевода строки. Любой конец строки во входном файле будет восприниматься как `'\n'` в Python. Кроме того, файл, открытый таким образом, получает атрибут `newlines`; значением этого атрибута является одно из `None` (ещё не прочитан перевод строки), `'\r'`, `'\n'`, `'\r\n'` или кортеж, содержащий все встреченные типы перевода строки. Универсальные символы перевода строки доступны только при чтении. Экземпляры поддерживают итерацию так же, как обычные экземпляры `file`.3031#### `[bz2.BZ2File.close]close()`3233Закрывает файл. Устанавливает атрибут данных3435`closed`3637в true. Закрытый файл нельзя использовать для дальнейших операций ввода-вывода.3839[`close()`](https://python-all.ru/3.0/library/bz2.html#bz2.BZ2File.close)4041может быть вызван несколько раз без ошибки.4243#### `[bz2.BZ2File.read]read([size])`4445Читает не более4647*size*4849несжатых байт, возвращаемых в виде строки. Если аргумент5051*size*5253отрицательный или опущен, читает до достижения EOF.5455#### `[bz2.BZ2File.readline]readline([size])`5657Возвращает следующую строку из файла в виде строки, сохраняя символ новой строки. Неотрицательный аргумент5859*size*6061ограничивает максимальное количество возвращаемых байт (при этом может быть возвращена неполная строка). Возвращает пустую строку при EOF.6263#### `[bz2.BZ2File.readlines]readlines([size])`6465Возвращает список прочитанных строк. Необязательный аргумент6667*size*6869, если задан, является приблизительной границей общего количества байт в возвращаемых строках.7071#### `[bz2.BZ2File.seek]seek(offset[, whence])`7273Перемещает на новую позицию в файле. Аргумент *offset* – это количество байт. Необязательный аргумент *whence* по умолчанию равен `os.SEEK_SET` или `0` (смещение от начала файла; смещение должно быть `>= 0`); другие значения: `os.SEEK_CUR` или `1` (смещение относительно текущей позиции; смещение может быть положительным или отрицательным), и `os.SEEK_END` или `2` (смещение относительно конца файла; смещение обычно отрицательное, хотя многие платформы допускают смещение за конец файла).7475Обратите внимание, что перемещение в bz2-файлах эмулируется, и в зависимости от параметров операция может быть крайне медленной.7677#### `[bz2.BZ2File.tell]tell()`7879Возвращает текущую позицию в файле (целое число).8081#### `[bz2.BZ2File.write]write(data)`8283Записывает строку8485*data*8687в файл. Обратите внимание, что из-за буферизации может потребоваться вызов8889[`close()`](https://python-all.ru/3.0/library/bz2.html#bz2.BZ2File.close)9091, прежде чем файл на диске отразит записанные данные.9293#### `[bz2.BZ2File.writelines]writelines(sequence_of_strings)`9495Записывает последовательность строк в файл. Обратите внимание, что символы новой строки не добавляются. Последовательность может быть любым итерируемым объектом, порождающим строки. Это эквивалентно вызову write() для каждой строки.9697## Последовательное сжатие/распаковка9899Последовательное сжатие и распаковка выполняется с помощью классов [`BZ2Compressor`](https://python-all.ru/3.0/library/bz2.html#bz2.BZ2Compressor) и [`BZ2Decompressor`](https://python-all.ru/3.0/library/bz2.html#bz2.BZ2Decompressor).100101#### `[bz2.BZ2Compressor]class bz2.BZ2Compressor([compresslevel])`102103Создаёт новый объект компрессора. Этот объект можно использовать для последовательного сжатия данных. Если необходимо сжать данные за один раз, используйте функцию [`compress()`](https://python-all.ru/3.0/library/bz2.html#bz2.compress). Параметр *compresslevel*, если указан, должен быть числом от `1` до `9`; по умолчанию `9`.104105#### `[bz2.BZ2Compressor.compress]compress(data)`106107Передаёт дополнительные данные объекту компрессора. Он будет возвращать фрагменты сжатых данных по мере возможности. После завершения передачи данных для сжатия вызовите метод108109[`flush()`](https://python-all.ru/3.0/library/bz2.html#bz2.BZ2Compressor.flush)110111, чтобы завершить процесс сжатия и вернуть то, что осталось во внутренних буферах.112113#### `[bz2.BZ2Compressor.flush]flush()`114115Завершает процесс сжатия и возвращает то, что осталось во внутренних буферах. После вызова этого метода нельзя использовать объект компрессора.116117#### `[bz2.BZ2Decompressor]class bz2.BZ2Decompressor`118119Создаёт новый объект декомпрессора. Этот объект можно использовать для последовательной распаковки данных. Если необходимо распаковать данные за один раз, используйте функцию [`decompress()`](https://python-all.ru/3.0/library/bz2.html#bz2.decompress).120121#### `[bz2.BZ2Decompressor.decompress]decompress(data)`122123Передаёт дополнительные данные объекту декомпрессора. Он будет возвращать фрагменты распакованных данных по мере возможности. При попытке распаковать данные после обнаружения конца потока будет возбуждено исключение124125[`EOFError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.EOFError)126127. Если после конца потока были обнаружены какие-либо данные, они будут проигнорированы и сохранены в атрибуте128129`unused_data`130131.132133## Одноразовое (де)сжатие134135Сжатие и распаковка за один раз обеспечиваются функциями [`compress()`](https://python-all.ru/3.0/library/bz2.html#bz2.compress) и [`decompress()`](https://python-all.ru/3.0/library/bz2.html#bz2.decompress).136137#### `[bz2.compress]bz2.compress(data[, compresslevel])`138139Сжимает140141*data*142143за один раз. Если требуется последовательное сжатие данных, используйте экземпляр144145[`BZ2Compressor`](https://python-all.ru/3.0/library/bz2.html#bz2.BZ2Compressor)146147. Параметр148149*compresslevel*150151, если указан, должен быть числом от152153`1`154155до156157`9`158159; по умолчанию160161`9`162163.164165#### `[bz2.decompress]bz2.decompress(data)`166167Распаковывает168169*data*170171за один раз. Если требуется последовательная распаковка данных, используйте экземпляр172173[`BZ2Decompressor`](https://python-all.ru/3.0/library/bz2.html#bz2.BZ2Decompressor)174175.176