<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 導航 - [索引](../genindex.xhtml "總目錄") - [模塊](../py-modindex.xhtml "Python 模塊索引") | - [下一頁](lzma.xhtml "lzma --- 用 LZMA 算法壓縮") | - [上一頁](gzip.xhtml "gzip --- 對 gzip 格式的支持") | - ![](https://box.kancloud.cn/a721fc7ec672275e257bbbfde49a4d4e_16x16.png) - [Python](https://www.python.org/) ? - zh\_CN 3.7.3 [文檔](../index.xhtml) ? - [Python 標準庫](index.xhtml) ? - [數據壓縮和存檔](archiving.xhtml) ? - $('.inline-search').show(0); | # [`bz2`](#module-bz2 "bz2: Interfaces for bzip2 compression and decompression.") --- 對 **bzip2** 壓縮算法的支持 **源代碼:** [Lib/bz2.py](https://github.com/python/cpython/tree/3.7/Lib/bz2.py) \[https://github.com/python/cpython/tree/3.7/Lib/bz2.py\] - - - - - - 此模塊提供了使用 bzip2 壓縮算法壓縮和解壓數據的一套完整的接口。 [`bz2`](#module-bz2 "bz2: Interfaces for bzip2 compression and decompression.") 模塊包含: - 用于讀寫壓縮文件的 [`open()`](#bz2.open "bz2.open") 函數和 [`BZ2File`](#bz2.BZ2File "bz2.BZ2File") 類。 - 用于增量壓縮和解壓的 [`BZ2Compressor`](#bz2.BZ2Compressor "bz2.BZ2Compressor") 和 [`BZ2Decompressor`](#bz2.BZ2Decompressor "bz2.BZ2Decompressor") 類。 - 用于一次性壓縮和解壓的 [`compress()`](#bz2.compress "bz2.compress") 和 [`decompress()`](#bz2.decompress "bz2.decompress") 函數。 此模塊中的所有類都能安全地從多個線程訪問。 ## 文件壓縮和解壓 `bz2.``open`(*filename*, *mode='r'*, *compresslevel=9*, *encoding=None*, *errors=None*, *newline=None*)以二進制或文本模式打開 bzip2 壓縮文件,返回一個 [file object](../glossary.xhtml#term-file-object)。 和 [`BZ2File`](#bz2.BZ2File "bz2.BZ2File") 的構造函數類似,*filename* 參數可以是一個實際的文件名([`str`](stdtypes.xhtml#str "str") 或 [`bytes`](stdtypes.xhtml#bytes "bytes") 對象),或是已有的可供讀取或寫入的文件對象。 *mode* 參數可設為二進制模式的 `'r'`、`'rb'`、`'w'`、`'wb'`、`'x'`、`'xb'`、`'a'` 或 `'ab'`,或者文本模式的 `'rt'`、`'wt'`、`'xt'` 或 `'at'`。默認是 `'rb'`。 *compresslevel* 參數是 1 到 9 的整數,和 [`BZ2File`](#bz2.BZ2File "bz2.BZ2File") 的構造函數一樣。 For binary mode, this function is equivalent to the [`BZ2File`](#bz2.BZ2File "bz2.BZ2File")constructor: `BZ2File(filename, mode, compresslevel=compresslevel)`. In this case, the *encoding*, *errors* and *newline* arguments must not be provided. For text mode, a [`BZ2File`](#bz2.BZ2File "bz2.BZ2File") object is created, and wrapped in an [`io.TextIOWrapper`](io.xhtml#io.TextIOWrapper "io.TextIOWrapper") instance with the specified encoding, error handling behavior, and line ending(s). 3\.3 新版功能. 在 3.4 版更改: 添加了 `'x'` (僅創建) 模式。 在 3.6 版更改: 接受一個 [類路徑對象](../glossary.xhtml#term-path-like-object)。 *class* `bz2.``BZ2File`(*filename*, *mode='r'*, *buffering=None*, *compresslevel=9*)用二進制模式打開 bzip2 壓縮文件。 If *filename* is a [`str`](stdtypes.xhtml#str "str") or [`bytes`](stdtypes.xhtml#bytes "bytes") object, open the named file directly. Otherwise, *filename* should be a [file object](../glossary.xhtml#term-file-object), which will be used to read or write the compressed data. The *mode* argument can be either `'r'` for reading (default), `'w'` for overwriting, `'x'` for exclusive creation, or `'a'` for appending. These can equivalently be given as `'rb'`, `'wb'`, `'xb'` and `'ab'`respectively. If *filename* is a file object (rather than an actual file name), a mode of `'w'` does not truncate the file, and is instead equivalent to `'a'`. The *buffering* argument is ignored. Its use is deprecated. If *mode* is `'w'` or `'a'`, *compresslevel* can be an integer between `1` and `9` specifying the level of compression: `1` produces the least compression, and `9` (default) produces the most compression. If *mode* is `'r'`, the input file may be the concatenation of multiple compressed streams. [`BZ2File`](#bz2.BZ2File "bz2.BZ2File") provides all of the members specified by the [`io.BufferedIOBase`](io.xhtml#io.BufferedIOBase "io.BufferedIOBase"), except for `detach()` and `truncate()`. Iteration and the [`with`](../reference/compound_stmts.xhtml#with) statement are supported. [`BZ2File`](#bz2.BZ2File "bz2.BZ2File") also provides the following method: `peek`(\[*n*\])Return buffered data without advancing the file position. At least one byte of data will be returned (unless at EOF). The exact number of bytes returned is unspecified. 注解 While calling [`peek()`](#bz2.BZ2File.peek "bz2.BZ2File.peek") does not change the file position of the [`BZ2File`](#bz2.BZ2File "bz2.BZ2File"), it may change the position of the underlying file object (e.g. if the [`BZ2File`](#bz2.BZ2File "bz2.BZ2File") was constructed by passing a file object for *filename*). 3\.3 新版功能. 在 3.1 版更改: 支持了 [`with`](../reference/compound_stmts.xhtml#with) 語句。 在 3.3 版更改: The `fileno()`, `readable()`, `seekable()`, `writable()`, `read1()` and `readinto()` methods were added. 在 3.3 版更改: Support was added for *filename* being a [file object](../glossary.xhtml#term-file-object) instead of an actual filename. 在 3.3 版更改: The `'a'` (append) mode was added, along with support for reading multi-stream files. 在 3.4 版更改: 添加了 `'x'` (僅創建) 模式。 在 3.5 版更改: The [`read()`](io.xhtml#io.BufferedIOBase.read "io.BufferedIOBase.read") method now accepts an argument of `None`. 在 3.6 版更改: 接受一個 [類路徑對象](../glossary.xhtml#term-path-like-object)。 ## 增量壓縮和解壓 *class* `bz2.``BZ2Compressor`(*compresslevel=9*)Create a new compressor object. This object may be used to compress data incrementally. For one-shot compression, use the [`compress()`](#bz2.compress "bz2.compress") function instead. *compresslevel*, if given, must be an integer between `1` and `9`. The default is `9`. `compress`(*data*)Provide data to the compressor object. Returns a chunk of compressed data if possible, or an empty byte string otherwise. When you have finished providing data to the compressor, call the [`flush()`](#bz2.BZ2Compressor.flush "bz2.BZ2Compressor.flush") method to finish the compression process. `flush`()結束壓縮進程,返回內部緩沖中剩余的壓縮完成的數據。 The compressor object may not be used after this method has been called. *class* `bz2.``BZ2Decompressor`Create a new decompressor object. This object may be used to decompress data incrementally. For one-shot compression, use the [`decompress()`](#bz2.decompress "bz2.decompress") function instead. 注解 This class does not transparently handle inputs containing multiple compressed streams, unlike [`decompress()`](#bz2.decompress "bz2.decompress") and [`BZ2File`](#bz2.BZ2File "bz2.BZ2File"). If you need to decompress a multi-stream input with [`BZ2Decompressor`](#bz2.BZ2Decompressor "bz2.BZ2Decompressor"), you must use a new decompressor for each stream. `decompress`(*data*, *max\_length=-1*)Decompress *data* (a [bytes-like object](../glossary.xhtml#term-bytes-like-object)), returning uncompressed data as bytes. Some of *data* may be buffered internally, for use in later calls to [`decompress()`](#bz2.decompress "bz2.decompress"). The returned data should be concatenated with the output of any previous calls to [`decompress()`](#bz2.decompress "bz2.decompress"). If *max\_length* is nonnegative, returns at most *max\_length*bytes of decompressed data. If this limit is reached and further output can be produced, the [`needs_input`](#bz2.BZ2Decompressor.needs_input "bz2.BZ2Decompressor.needs_input") attribute will be set to `False`. In this case, the next call to [`decompress()`](#bz2.BZ2Decompressor.decompress "bz2.BZ2Decompressor.decompress") may provide *data* as `b''` to obtain more of the output. If all of the input data was decompressed and returned (either because this was less than *max\_length* bytes, or because *max\_length* was negative), the [`needs_input`](#bz2.BZ2Decompressor.needs_input "bz2.BZ2Decompressor.needs_input") attribute will be set to `True`. Attempting to decompress data after the end of stream is reached raises an EOFError. Any data found after the end of the stream is ignored and saved in the [`unused_data`](#bz2.BZ2Decompressor.unused_data "bz2.BZ2Decompressor.unused_data") attribute. 在 3.5 版更改: Added the *max\_length* parameter. `eof`若達到了數據流末尾標識符則為 `True`。 3\.3 新版功能. `unused_data`壓縮數據流的末尾還有數據。 If this attribute is accessed before the end of the stream has been reached, its value will be `b''`. `needs_input``False` if the [`decompress()`](#bz2.BZ2Decompressor.decompress "bz2.BZ2Decompressor.decompress") method can provide more decompressed data before requiring new uncompressed input. 3\.5 新版功能. ## 一次性壓縮或解壓 `bz2.``compress`(*data*, *compresslevel=9*)Compress *data*, a [bytes-like object](../glossary.xhtml#term-bytes-like-object). *compresslevel*, if given, must be an integer between `1` and `9`. The default is `9`. For incremental compression, use a [`BZ2Compressor`](#bz2.BZ2Compressor "bz2.BZ2Compressor") instead. `bz2.``decompress`(*data*)Decompress *data*, a [bytes-like object](../glossary.xhtml#term-bytes-like-object). If *data* is the concatenation of multiple compressed streams, decompress all of the streams. For incremental decompression, use a [`BZ2Decompressor`](#bz2.BZ2Decompressor "bz2.BZ2Decompressor") instead. 在 3.3 版更改: 支持了多數據流的輸入。 ## 用法示例 Below are some examples of typical usage of the [`bz2`](#module-bz2 "bz2: Interfaces for bzip2 compression and decompression.") module. Using [`compress()`](#bz2.compress "bz2.compress") and [`decompress()`](#bz2.decompress "bz2.decompress") to demonstrate round-trip compression: ``` >>> import bz2 ``` ``` >>> data = b"""\ ... Donec rhoncus quis sapien sit amet molestie. Fusce scelerisque vel augue ... nec ullamcorper. Nam rutrum pretium placerat. Aliquam vel tristique lorem, ... sit amet cursus ante. In interdum laoreet mi, sit amet ultrices purus ... pulvinar a. Nam gravida euismod magna, non varius justo tincidunt feugiat. ... Aliquam pharetra lacus non risus vehicula rutrum. Maecenas aliquam leo ... felis. Pellentesque semper nunc sit amet nibh ullamcorper, ac elementum ... dolor luctus. Curabitur lacinia mi ornare consectetur vestibulum.""" ``` ``` >>> c = bz2.compress(data) >>> len(data) / len(c) # Data compression ratio 1.513595166163142 ``` ``` >>> d = bz2.decompress(c) >>> data == d # Check equality to original object after round-trip True ``` Using [`BZ2Compressor`](#bz2.BZ2Compressor "bz2.BZ2Compressor") for incremental compression: ``` >>> import bz2 ``` ``` >>> def gen_data(chunks=10, chunksize=1000): ... """Yield incremental blocks of chunksize bytes.""" ... for _ in range(chunks): ... yield b"z" * chunksize ... >>> comp = bz2.BZ2Compressor() >>> out = b"" >>> for chunk in gen_data(): ... # Provide data to the compressor object ... out = out + comp.compress(chunk) ... >>> # Finish the compression process. Call this once you have >>> # finished providing data to the compressor. >>> out = out + comp.flush() ``` The example above uses a very "nonrandom" stream of data (a stream of b"z" chunks). Random data tends to compress poorly, while ordered, repetitive data usually yields a high compression ratio. Writing and reading a bzip2-compressed file in binary mode: ``` >>> import bz2 ``` ``` >>> data = b"""\ ... Donec rhoncus quis sapien sit amet molestie. Fusce scelerisque vel augue ... nec ullamcorper. Nam rutrum pretium placerat. Aliquam vel tristique lorem, ... sit amet cursus ante. In interdum laoreet mi, sit amet ultrices purus ... pulvinar a. Nam gravida euismod magna, non varius justo tincidunt feugiat. ... Aliquam pharetra lacus non risus vehicula rutrum. Maecenas aliquam leo ... felis. Pellentesque semper nunc sit amet nibh ullamcorper, ac elementum ... dolor luctus. Curabitur lacinia mi ornare consectetur vestibulum.""" ``` ``` >>> with bz2.open("myfile.bz2", "wb") as f: ... # Write compressed data to file ... unused = f.write(data) ``` ``` >>> with bz2.open("myfile.bz2", "rb") as f: ... # Decompress data from file ... content = f.read() ``` ``` >>> content == data # Check equality to original object after round-trip True ``` ### 導航 - [索引](../genindex.xhtml "總目錄") - [模塊](../py-modindex.xhtml "Python 模塊索引") | - [下一頁](lzma.xhtml "lzma --- 用 LZMA 算法壓縮") | - [上一頁](gzip.xhtml "gzip --- 對 gzip 格式的支持") | - ![](https://box.kancloud.cn/a721fc7ec672275e257bbbfde49a4d4e_16x16.png) - [Python](https://www.python.org/) ? - zh\_CN 3.7.3 [文檔](../index.xhtml) ? - [Python 標準庫](index.xhtml) ? - [數據壓縮和存檔](archiving.xhtml) ? - $('.inline-search').show(0); | ? [版權所有](../copyright.xhtml) 2001-2019, Python Software Foundation. Python 軟件基金會是一個非盈利組織。 [請捐助。](https://www.python.org/psf/donations/) 最后更新于 5月 21, 2019. [發現了問題](../bugs.xhtml)? 使用[Sphinx](http://sphinx.pocoo.org/)1.8.4 創建。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看