Документация Python неофициальный перевод

bz2.md

106 строк · 13.2 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.2/library/bz2.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 12.3. [`bz2`](https://python-all.ru/3.2/library/bz2.html#module-bz2) – Сжатие, совместимое с **bzip2**89Этот модуль предоставляет комплексный интерфейс для библиотеки сжатия bz2. Он реализует полный файловый интерфейс, функции одноразового сжатия/распаковки и типы для последовательного сжатия/распаковки.1011Ниже приведена сводка возможностей модуля bz2:1213- [`BZ2File`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2File) реализует полный файловый интерфейс, включая [`readline()`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2File.readline), [`readlines()`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2File.readlines), [`writelines()`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2File.writelines), [`seek()`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2File.seek) и т.д.;14- [`BZ2File`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2File) реализует эмулированную поддержку [`seek()`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2File.seek);15- [`BZ2File`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2File) class implements universal newline support;16- [`BZ2File`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2File) предлагает оптимизированную итерацию по строкам с использованием алгоритма упреждающего чтения;17- Sequential (de)compression supported by [`BZ2Compressor`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2Compressor) and [`BZ2Decompressor`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2Decompressor) classes;18- One-shot (de)compression supported by [`compress()`](https://python-all.ru/3.2/library/bz2.html#bz2.compress) and [`decompress()`](https://python-all.ru/3.2/library/bz2.html#bz2.decompress) functions;19- Потокобезопасность использует индивидуальный механизм блокировки.2021## 12.3.1. Сжатие/распаковка файлов2223Handling of compressed files is offered by the [`BZ2File`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2File) class.2425#### `class bz2.BZ2File(filename, mode='r', buffering=0, compresslevel=9)`2627Открывает bz2-файл. Режим может быть `'r'` или `'w'` – для чтения (по умолчанию) или записи. При открытии на запись файл создаётся, если он не существует, и усекается в противном случае. Если задан *buffering*, значение `0` означает отсутствие буферизации, а бо́льшие числа задают размер буфера; по умолчанию `0`. Если задан *compresslevel*, это должно быть число от `1` до `9`; по умолчанию `9`. Добавление `'U'` к режиму открывает файл для ввода в режиме [*универсальных символов новой строки*](https://python-all.ru/3.2/glossary.html#term-universal-newlines). Любой конец строки во входном файле будет восприниматься в Python как `'\n'`. Кроме того, файл, открытый таким образом, получает атрибут `newlines`; значением этого атрибута может быть `None` (ещё не прочитано ни одной новой строки), `'\r'`, `'\n'`, `'\r\n'` или кортеж, содержащий все встреченные типы новых строк. Универсальные символы новой строки доступны только при чтении. Экземпляры поддерживают итерацию так же, как обычные экземпляры `file`.2829[`BZ2File`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2File) поддерживает оператор [`with`](https://python-all.ru/3.2/reference/compound_stmts.html#with).3031Изменено в версии 3.1: Добавлена поддержка оператора [`with`](https://python-all.ru/3.2/reference/compound_stmts.html#with).3233> **Примечание**34>35> Этот класс не поддерживает входные файлы, содержащие несколько потоков (например, созданные утилитой **pbzip2**). При чтении такого файла будет доступен только первый поток. Если требуется поддержка многоточных файлов, рассмотрите возможность использования стороннего модуля `bz2file` (доступен на [PyPI](https://python-all.ru/3.2/library/bz2.html)). Этот модуль предоставляет обратный порт класса [`BZ2File`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2File) из Python 3.3, который поддерживает многоточные файлы.3637#### `close()`3839Закрывает файл. Устанавливает атрибут данных `closed` в true. Закрытый файл нельзя использовать для дальнейших операций ввода-вывода. [`close()`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2File.close) может быть вызван несколько раз без ошибки.4041#### `read([size])`4243Читает не более *size* несжатых байт, возвращаемых в виде байтовой строки. Если аргумент *size* отрицательный или опущен, читает до достижения EOF.4445#### `readline([size])`4647Возвращает следующую строку из файла в виде байтовой строки, сохраняя символ новой строки. Неотрицательный аргумент *size* ограничивает максимальное количество возвращаемых байт (в этом случае может быть возвращена неполная строка). По достижении EOF возвращает пустую байтовую строку.4849#### `readlines([size])`5051Возвращает список прочитанных строк. Необязательный аргумент *size*, если задан, является приблизительной границей общего количества байт в возвращаемых строках.5253#### `seek(offset[, whence])`5455Перемещает на новую позицию в файле. Аргумент *offset* – это количество байт. Необязательный аргумент *whence* по умолчанию равен `os.SEEK_SET` или `0` (смещение от начала файла; смещение должно быть `>= 0`); другие значения: `os.SEEK_CUR` или `1` (смещение относительно текущей позиции; смещение может быть положительным или отрицательным), и `os.SEEK_END` или `2` (смещение относительно конца файла; смещение обычно отрицательное, хотя многие платформы допускают смещение за конец файла).5657Обратите внимание, что перемещение в bz2-файлах эмулируется, и в зависимости от параметров операция может быть крайне медленной.5859#### `tell()`6061Возвращает текущую позицию в файле (целое число).6263#### `write(data)`6465Записывает байтовую строку *data* в файл. Из-за буферизации может потребоваться вызов [`close()`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2File.close), прежде чем данные отобразятся в файле на диске.6667#### `writelines(sequence_of_byte_strings)`6869Записывает последовательность байтовых строк в файл. Символы новой строки не добавляются. Последовательностью может быть любой итерируемый объект, возвращающий байтовые строки. Это эквивалентно вызову write() для каждой байтовой строки.7071## 12.3.2. Последовательное сжатие (распаковка)7273Последовательное сжатие и распаковка выполняется с помощью классов [`BZ2Compressor`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2Compressor) и [`BZ2Decompressor`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2Decompressor).7475#### `class bz2.BZ2Compressor(compresslevel=9)`7677Создаёт новый объект компрессора. Этот объект можно использовать для последовательного сжатия данных. Если необходимо сжать данные за один раз, используйте функцию [`compress()`](https://python-all.ru/3.2/library/bz2.html#bz2.compress). Параметр *compresslevel*, если указан, должен быть числом от `1` до `9`; по умолчанию `9`.7879#### `compress(data)`8081Передаёт дополнительные данные объекту компрессора. Он будет возвращать фрагменты сжатых данных по мере возможности. После завершения передачи данных для сжатия вызовите метод [`flush()`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2Compressor.flush), чтобы завершить процесс сжатия и вернуть то, что осталось во внутренних буферах.8283#### `flush()`8485Завершает процесс сжатия и возвращает то, что осталось во внутренних буферах. После вызова этого метода нельзя использовать объект компрессора.8687#### `class bz2.BZ2Decompressor`8889Создаёт новый объект декомпрессора. Этот объект можно использовать для последовательной распаковки данных. Если необходимо распаковать данные за один раз, используйте функцию [`decompress()`](https://python-all.ru/3.2/library/bz2.html#bz2.decompress).9091#### `decompress(data)`9293Передаёт дополнительные данные объекту декомпрессора. Он будет возвращать фрагменты распакованных данных по мере возможности. При попытке распаковать данные после обнаружения конца потока будет возбуждено исключение [`EOFError`](https://python-all.ru/3.2/library/exceptions.html#EOFError). Если после конца потока были обнаружены какие-либо данные, они будут проигнорированы и сохранены в атрибуте `unused_data`.9495## 12.3.3. Сжатие (распаковка) за один раз9697Сжатие и распаковка за один раз обеспечиваются функциями [`compress()`](https://python-all.ru/3.2/library/bz2.html#bz2.compress) и [`decompress()`](https://python-all.ru/3.2/library/bz2.html#bz2.decompress).9899#### `bz2.compress(data, compresslevel=9)`100101Сжимает *data* за один раз. Если требуется последовательное сжатие данных, используйте экземпляр [`BZ2Compressor`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2Compressor). Параметр *compresslevel*, если указан, должен быть числом от `1` до `9`; по умолчанию `9`.102103#### `bz2.decompress(data)`104105Распаковывает *data* за один раз. Если требуется последовательная распаковка данных, используйте экземпляр [`BZ2Decompressor`](https://python-all.ru/3.2/library/bz2.html#bz2.BZ2Decompressor).106