Ví dụ tập tin nén lzma python

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 Vawda 

2 và kế thừa
. sectionauthor:: Nadeem Vawda 

3 đượ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 Vawda 

7 đến
. sectionauthor:: Nadeem Vawda 

8 [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 Vawda 

9]. 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 Vawda 

8, 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 Vawda 

2 và
. sectionauthor:: Nadeem Vawda 

3. 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 Vawda 
0
. moduleauthor:: Nadeem Vawda 
1
. moduleauthor:: Nadeem Vawda 
2
. moduleauthor:: Nadeem Vawda 
3
. moduleauthor:: Nadeem Vawda 
4

Điều khoản khác

. moduleauthor:: Nadeem Vawda 
5

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.3

3 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.3
    
    
    4. 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.3
    
    
    5. 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.3
    
    
    6. Số bit ngữ cảnh theo nghĩa đen
  • . versionadded:: 3.3
    
    
    7. Số bit vị trí bằng chữ. Tổng số
    . versionadded:: 3.3
    
    
    8 phải nhiều nhất là 4
  • . versionadded:: 3.3
    
    
    9. 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

Nén LZMA hoạt động như thế nào?

LZMA sử dụng thuật toán nén từ điển [một biến thể của LZ77 với kích thước từ điển khổng lồ và hỗ trợ đặc biệt cho khoảng cách khớp được sử dụng nhiều lần], đầu ra sau đó được mã hóa bằng bộ mã hóa phạm vi, sử dụng mô hình phức tạp để đưa ra dự đoán xác suất của từng bit

Làm cách nào để sử dụng LZMA trong Python?

Mở tệp nén LZMA ở chế độ nhị phân hoặc văn bản, trả về một đối tượng tệp . Đối số tên tệp có thể là tên tệp thực tế [được cung cấp dưới dạng str , byte hoặc đối tượng giống đường dẫn], trong trường hợp tệp được đặt tên được mở hoặc nó có thể là đối tượng tệp hiện có để đọc hoặc ghi vào.

LZMA2 so với LZMA là gì?

LZMA2 là phiên bản sửa đổi của LZMA cung cấp tỷ lệ nén tốt hơn cho dữ liệu không nén được [dữ liệu ngẫu nhiên mở rộng khoảng 0. 005%, so với 1. 35% với LZMA gốc] và tùy chọn có thể nén song song nhiều phần của tệp lớn, giúp tăng đáng kể tốc độ nén nhưng có thể giảm dung lượng.

Thuật toán nén hiệu quả nhất là gì?

Thuật toán nhanh nhất, lz4 , dẫn đến tỷ lệ nén thấp hơn; .

Chủ Đề