Trình xác định định dạng này không hỗ trợ kiểm tra tính toàn vẹn và yêu cầu bạn luôn chỉ định chuỗi bộ lọc tùy chỉnh [cho cả nén và giải nén]. Ngoài ra, dữ liệu được nén theo cách này không thể được giải nén bằng format_Auto
Mô-đun này cung cấp các lớp và chức năng thuận tiện cho việc nén và giải nén dữ liệu bằng thuật toán nén LZMA. Cũng bao gồm một giao diện tệp hỗ trợ các định dạng tệp
. sectionauthor:: Nadeem Vawda2 và kế thừa
. sectionauthor:: Nadeem Vawda3 được tiện ích sử dụng, cũng như các luồng nén thô
Giao diện được cung cấp bởi mô-đun này rất giống với giao diện của mô-đun. Lưu ý rằng và không an toàn cho luồng, vì vậy nếu bạn cần sử dụng một phiên bản duy nhất từ nhiều luồng, thì cần phải bảo vệ nó bằng khóa
. exception:: LZMAError This exception is raised when an error occurs during compression or decompression, or while initializing the compressor/decompressor state.
Đọc và ghi các tập tin nén
. function:: open[filename, mode="rb", *, format=None, check=-1, preset=None, filters=None, encoding=None, errors=None, newline=None] Open an LZMA-compressed file in binary or text mode, returning a :term:`file object`. The *filename* argument can be either an actual file name [given as a :class:`str`, :class:`bytes` or :term:`path-like ` object], in which case the named file is opened, or it can be an existing file object to read from or write to. The *mode* argument can be any of ``"r"``, ``"rb"``, ``"w"``, ``"wb"``, ``"x"``, ``"xb"``, ``"a"`` or ``"ab"`` for binary mode, or ``"rt"``, ``"wt"``, ``"xt"``, or ``"at"`` for text mode. The default is ``"rb"``. When opening a file for reading, the *format* and *filters* arguments have the same meanings as for :class:`LZMADecompressor`. In this case, the *check* and *preset* arguments should not be used. When opening a file for writing, the *format*, *check*, *preset* and *filters* arguments have the same meanings as for :class:`LZMACompressor`. For binary mode, this function is equivalent to the :class:`LZMAFile` constructor: ``LZMAFile[filename, mode, ...]``. In this case, the *encoding*, *errors* and *newline* arguments must not be provided. For text mode, a :class:`LZMAFile` object is created, and wrapped in an :class:`io.TextIOWrapper` instance with the specified encoding, error handling behavior, and line ending[s]. . versionchanged:: 3.4 Added support for the ``"x"``, ``"xb"`` and ``"xt"`` modes. . versionchanged:: 3.6 Accepts a :term:`path-like object`.
Nén và giải nén dữ liệu trong bộ nhớ
Tạo một đối tượng nén, có thể được sử dụng để nén dữ liệu tăng dần
Để biết cách nén một đoạn dữ liệu thuận tiện hơn, hãy xem
Đối số định dạng chỉ định định dạng vùng chứa nào sẽ được sử dụng. giá trị có thể là
- Định dạng vùng chứa
. sectionauthor:: Nadeem Vawda
2. Đây là định dạng mặc định - Định dạng vùng chứa
. sectionauthor:: Nadeem Vawda
3 kế thừa. Định dạng này bị hạn chế hơn so với. sectionauthor:: Nadeem Vawda
2 -- định dạng này không hỗ trợ kiểm tra tính toàn vẹn hoặc nhiều bộ lọc - Luồng dữ liệu thô, không sử dụng bất kỳ định dạng vùng chứa nào. Trình xác định định dạng này không hỗ trợ kiểm tra tính toàn vẹn và yêu cầu bạn luôn chỉ định chuỗi bộ lọc tùy chỉnh [cho cả nén và giải nén]. Ngoài ra, dữ liệu được nén theo cách này không thể được giải nén bằng cách sử dụng [xem phần ]
Đối số kiểm tra chỉ định loại kiểm tra tính toàn vẹn để đưa vào dữ liệu nén. Việc kiểm tra này được sử dụng khi giải nén, để đảm bảo rằng dữ liệu không bị hỏng. giá trị có thể là
- Không kiểm tra tính toàn vẹn. Đây là giá trị mặc định [và giá trị duy nhất được chấp nhận] cho và
- Kiểm tra dự phòng theo chu kỳ 32-bit
- Kiểm tra dự phòng theo chu kỳ 64-bit. Đây là mặc định cho
- Thuật toán băm an toàn 256-bit
Nếu kiểm tra được chỉ định không được hỗ trợ, một dấu hiệu sẽ xuất hiện
Cài đặt nén có thể được chỉ định dưới dạng mức nén đặt trước [với đối số đặt trước] hoặc chi tiết dưới dạng chuỗi bộ lọc tùy chỉnh [với đối số bộ lọc]
Đối số đặt trước [nếu được cung cấp] phải là một số nguyên trong khoảng từ
. sectionauthor:: Nadeem Vawda7 đến
. sectionauthor:: Nadeem Vawda8 [bao gồm], tùy chọn OR-ed với hằng số. Nếu cả giá trị đặt trước và bộ lọc đều không được cung cấp, thì hành vi mặc định là sử dụng [mức đặt trước
. sectionauthor:: Nadeem Vawda9]. Các cài đặt trước cao hơn tạo ra đầu ra nhỏ hơn nhưng làm cho quá trình nén chậm hơn
Ghi chú
Ngoài việc sử dụng nhiều CPU hơn, quá trình nén với các cài đặt trước cao hơn cũng đòi hỏi nhiều bộ nhớ hơn [và tạo ra đầu ra cần nhiều bộ nhớ hơn để giải nén]. Ví dụ: với cài đặt trước
. sectionauthor:: Nadeem Vawda8, chi phí hoạt động cho một đối tượng có thể lên tới 800 MiB. Vì lý do này, tốt nhất là bạn nên sử dụng cài đặt sẵn mặc định.
Đối số bộ lọc [nếu được cung cấp] phải là một trình xác định chuỗi bộ lọc. Xem để biết chi tiết
. method:: compress[data] Compress *data* [a :class:`bytes` object], returning a :class:`bytes` object containing compressed data for at least part of the input. Some of *data* may be buffered internally, for use in later calls to :meth:`compress` and :meth:`flush`. The returned data should be concatenated with the output of any previous calls to :meth:`compress`.
. method:: flush[] Finish the compression process, returning a :class:`bytes` object containing any data stored in the compressor's internal buffers. The compressor cannot be used after this method has been called.
Tạo một đối tượng giải nén, có thể được sử dụng để giải nén dữ liệu dần dần
Để biết cách thuận tiện hơn để giải nén toàn bộ luồng đã nén cùng một lúc, hãy xem
Đối số định dạng chỉ định định dạng vùng chứa sẽ được sử dụng. Mặc định là , có thể giải nén cả tệp
. sectionauthor:: Nadeem Vawda2 và
. sectionauthor:: Nadeem Vawda3. Các giá trị có thể khác là , , và
Đối số memlimit chỉ định giới hạn [tính bằng byte] trên dung lượng bộ nhớ mà bộ giải nén có thể sử dụng. Khi đối số này được sử dụng, quá trình giải nén sẽ thất bại với thông báo nếu không thể giải nén đầu vào trong giới hạn bộ nhớ đã cho
Đối số bộ lọc chỉ định chuỗi bộ lọc được sử dụng để tạo luồng được giải nén. Đối số này là bắt buộc nếu định dạng là , nhưng không được sử dụng cho các định dạng khác. Xem để biết thêm thông tin về chuỗi bộ lọc
Ghi chú
Lớp này không xử lý rõ ràng các đầu vào chứa nhiều luồng nén, không giống như và. Để giải nén đầu vào nhiều luồng với , bạn phải tạo một bộ giải nén mới cho mỗi luồng
. method:: decompress[data, max_length=-1] Decompress *data* [a :term:`bytes-like object`], returning uncompressed data as bytes. Some of *data* may be buffered internally, for use in later calls to :meth:`decompress`. The returned data should be concatenated with the output of any previous calls to :meth:`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 :attr:`~.needs_input` attribute will be set to ``False``. In this case, the next call to :meth:`~.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 :attr:`~.needs_input` attribute will be set to ``True``. Attempting to decompress data after the end of stream is reached raises an :exc:`EOFError`. Any data found after the end of the stream is ignored and saved in the :attr:`~.unused_data` attribute. . versionchanged:: 3.5 Added the *max_length* parameter.
. attribute:: check The ID of the integrity check used by the input stream. This may be :const:`CHECK_UNKNOWN` until enough of the input has been decoded to determine what integrity check it uses.
. moduleauthor:: Nadeem Vawda0
. moduleauthor:: Nadeem Vawda1
. moduleauthor:: Nadeem Vawda2
. moduleauthor:: Nadeem Vawda3
. moduleauthor:: Nadeem Vawda4
Điều khoản khác
. moduleauthor:: Nadeem Vawda5
Chỉ định chuỗi bộ lọc tùy chỉnh
Trình xác định chuỗi bộ lọc là một chuỗi từ điển, trong đó mỗi từ điển chứa ID và các tùy chọn cho một bộ lọc. Mỗi từ điển phải chứa khóa
. versionadded:: 3.33 và có thể chứa các khóa bổ sung để chỉ định các tùy chọn phụ thuộc vào bộ lọc. ID bộ lọc hợp lệ như sau
- bộ lọc nén
- [để sử dụng với]
- [để sử dụng với và ]
- bộ lọc đồng bằng
- Bộ lọc nhánh-cuộc gọi-nhảy [BCJ]
Chuỗi bộ lọc có thể bao gồm tối đa 4 bộ lọc và không được để trống. Bộ lọc cuối cùng trong chuỗi phải là bộ lọc nén và mọi bộ lọc khác phải là bộ lọc delta hoặc BCJ
Bộ lọc nén hỗ trợ các tùy chọn sau [được chỉ định dưới dạng các mục bổ sung trong từ điển đại diện cho bộ lọc]
. versionadded:: 3.34. Giá trị đặt trước nén để sử dụng làm nguồn giá trị mặc định cho các tùy chọn không được chỉ định rõ ràng . versionadded:: 3.35. Kích thước từ điển tính bằng byte. Điều này phải nằm trong khoảng từ 4 KiB đến 1. 5 GiB [bao gồm] . versionadded:: 3.36. Số bit ngữ cảnh theo nghĩa đen . versionadded:: 3.37. Số bit vị trí bằng chữ. Tổng số. versionadded:: 3.38 phải nhiều nhất là 4 . versionadded:: 3.39. Số bit vị trí; . exception:: LZMAError This exception is raised when an error occurs during compression or decompression, or while initializing the compressor/decompressor state.0. hoặc . exception:: LZMAError This exception is raised when an error occurs during compression or decompression, or while initializing the compressor/decompressor state.1. Điều gì nên được coi là "độ dài đẹp" cho một trận đấu. Đây phải là 273 hoặc ít hơn . exception:: LZMAError This exception is raised when an error occurs during compression or decompression, or while initializing the compressor/decompressor state.2. Sử dụng công cụ tìm trận đấu nào -- , , , hoặc . exception:: LZMAError This exception is raised when an error occurs during compression or decompression, or while initializing the compressor/decompressor state.3. Độ sâu tìm kiếm tối đa được sử dụng bởi công cụ tìm trận đấu. 0 [mặc định] có nghĩa là chọn tự động dựa trên các tùy chọn bộ lọc khác
Bộ lọc delta lưu trữ sự khác biệt giữa các byte, tạo ra nhiều đầu vào lặp lại hơn cho máy nén trong một số trường hợp nhất định. Nó hỗ trợ một tùy chọn,
. exception:: LZMAError This exception is raised when an error occurs during compression or decompression, or while initializing the compressor/decompressor state.4. Điều này cho biết khoảng cách giữa các byte được trừ. Mặc định là 1, tôi. e. lấy sự khác biệt giữa các byte liền kề
Các bộ lọc BCJ được thiết kế để áp dụng cho mã máy. Chúng chuyển đổi các nhánh tương đối, lệnh gọi và bước nhảy trong mã để sử dụng địa chỉ tuyệt đối, với mục đích tăng khả năng dự phòng mà máy nén có thể khai thác. Các bộ lọc này hỗ trợ một tùy chọn,
. exception:: LZMAError This exception is raised when an error occurs during compression or decompression, or while initializing the compressor/decompressor state.5. Điều này chỉ định địa chỉ sẽ được ánh xạ tới phần đầu của dữ liệu đầu vào. Mặc định là 0