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 Show 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 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à
Đố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à
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ỉnhTrì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
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)
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; . |