Python

compression.zstd — Zstandard 형식과 호환되는 압축

Added in version 3.14.

소스 코드: Lib/compression/zstd/__init__.py


이 모듈은 Zstandard(또는 zstd) 압축 알고리즘을 사용하여 데이터를 압축하고 해제하는 클래스와 함수를 제공합니다. zstd manual <https://facebook.github.io/zstd/doc/api_manual_latest.html>`__에 따르면 Zstandard는 “zlib 수준의 실시간 압축 시나리오를 목표로 하며 더 나은 압축률을 제공하는 빠른 무손실 압축 알고리즘”으로 설명됩니다. 또한 :program:`zstd 유틸리티에 의해 생성된 .zst 파일의 내용을 읽고 쓰는 기능과 원시 zstd 압축 스트림을 처리하는 파일 인터페이스도 포함되어 있습니다.

compression.zstd 모듈은 다음 내용을 포함합니다:

This is an optional module. If it is missing from your copy of CPython, look for documentation from your distributor (that is, whoever provided Python to you). If you are the distributor, see 선택적 모듈의 요구 사항.

예외 처리

exception compression.zstd.ZstdError

압축 또는 해제 중에 오류가 발생하거나 압축기/해제기 상태를 초기화하는 동안 오류가 발생할 때 이 예외가 발생합니다.

압축된 파일 읽기 및 쓰기

compression.zstd.open(file, /, mode='rb', *, level=None, options=None, zstd_dict=None, encoding=None, errors=None, newline=None)

Zstandard 압축 파일을 바이너리 또는 텍스트 모드로 열고 file object 를 반환합니다.

file 인자는 파일 이름(str, bytes 또는 path-like 객체)이거나 읽기 또는 쓰기용 기존 파일 객체일 수 있습니다. 파일 이름인 경우 해당 파일이 열립니다.

mode 인자는 읽기(기본값)를 위한 'rb', 덮어쓰기를 위한 'wb', 추가를 위한 'ab', 배타적 생성을 위한 'xb' 중 하나일 수 있습니다. 이들은 각각 'r', 'w', 'a', 'x' 와 동일하게 사용할 수 있습니다. 또한 텍스트 모드에서 'rt', 'wt', 'at', 'xt' 로 열 수도 있습니다.

읽기 시, options 인자는 고급 압축 해제 파라미터를 제공하는 딕셔너리일 수 있으며, 지원되는 파라미터에 대한 자세한 내용은 DecompressionParameter 를 참조하십시오. zstd_dict 인자는 압축 해제 중에 사용될 ZstdDict 인스턴스입니다. 읽기 시 level 인자가 None이 아니면 TypeError 가 발생합니다.

쓰기 시, options 인자는 고급 압축 파라미터를 제공하는 딕셔너리일 수 있으며, 지원되는 파라미터에 대한 자세한 내용은 CompressionParameter 를 참조하십시오. level 인자는 압력 데이터 쓰기 시 사용할 압축 수준입니다. level 또는 options 중 하나만 None이 아니어야 합니다. zstd_dict 인자는 압축 중에 사용될 ZstdDict 인스턴스입니다.

바이너리 모드에서 이 함수는 ZstdFile 생성자 ZstdFile(file, mode, ...) 와 동일하게 작동합니다. 이 경우 encoding, errors, newline 파라미터를 제공해서는 안 됩니다.

텍스트 모드에서 ZstdFile 객체가 생성되며, 지정된 인코딩, 에러 처리 방식 및 줄 바꿈 처리에 따라 io.TextIOWrapper 인스턴스로 감싸집니다.

class compression.zstd.ZstdFile(file, /, mode='rb', *, level=None, options=None, zstd_dict=None)

Zstandard 압축 파일을 바이너리 모드로 엽니다.

ZstdFile 은 이미 열려 있는 file object 를 래핑하거나 명명된 파일에 직접 작동할 수 있습니다. file 인자는 래핑할 파일 객체 또는 열 파일의 이름(str, bytes 또는 path-like 객체)을 지정합니다. 기존 파일 객체를 래핑한 경우, ZstdFile 이 닫힐 때 해당 파일은 닫히지 않습니다.

mode 인자는 읽기(기본값)를 위한 'rb', 덮어쓰기를 위한 'wb', 배타적 생성을 위한 'xb' 또는 추가를 위한 'ab' 중 하나일 수 있습니다. 이들은 각각 'r', 'w', 'x''a' 와 동일하게 사용할 수 있습니다.

file 이 실제 파일 이름이 아닌 파일 객체인 경우, 'w' 모드는 파일을 자르지 않으며 대신 'a' 와 동일하게 작동합니다.

읽기 시, options 인자는 고급 압축 해제 파라미터를 제공하는 딕셔너리일 수 있으며, 지원되는 파라미터에 대한 자세한 내용은 DecompressionParameter 를 참조하십시오. zstd_dict 인자는 압축 해제 중에 사용될 ZstdDict 인스턴스입니다. 읽기 시 level 인자가 None이 아니면 TypeError 가 발생합니다.

쓰기 시, options 인자는 고급 압축 파라미터를 제공하는 딕셔너리일 수 있으며, 지원되는 파라미터에 대한 자세한 내용은 CompressionParameter 를 참조하십시오. level 인자는 압축 데이터 쓰기 시 사용할 압력 수준입니다. level 또는 options 중 하나만 전달될 수 있습니다. zstd_dict 인자는 압축 중에 사용될 ZstdDict 인스턴스입니다.

ZstdFiledetach()truncate() 를 제외한 io.BufferedIOBase 에서 지정하는 모든 멤버를 지원합니다. 이터레이션과 with 문이 지원됩니다.

다음 메서드 및 속성도 제공됩니다:

peek(size=-1)

파일 위치를 전진시키지 않고 버퍼링된 데이터를 반환합니다. EOF에 도달하지 않은 한 최소 1바이트의 데이터가 반환됩니다. 반환되는 정확한 바이트 수는 지정되지 않습니다( size 인자는 무시됨).

참고

peek() 을 호출해도 ZstdFile 의 파일 위치는 변경되지 않지만, 하부 파일 객체의 위치는 변경될 수 있습니다(예를 들어, file 에 파일 객체를 전달하여 ZstdFile 이 생성된 경우).

mode

읽기용은 'rb', 쓰기용은 'wb' 입니다.

name

The name of the Zstandard file. Equivalent to the name attribute of the underlying file object.

메모리에서 데이터 압축 및 해제

compression.zstd.compress(data, level=None, options=None, zstd_dict=None)

data (bytes-like object)를 압축하여, 압축된 데이터를 bytes 객체로 반환합니다.

level 인자는 압축 수준을 제어하는 정수입니다. leveloptions 에서 CompressionParameter.compression_level 을 설정하는 것의 대안입니다. level 에 전달할 수 있는 값들을 확인하려면 compression_level 에 대한 bounds() 를 사용하십시오. 고급 압축 옵션이 필요한 경우, level 인자를 생략하고 options 딕셔너리에서 CompressionParameter.compression_level 파라미터를 설정해야 합니다.

options 인자는 고급 압축 파라미터를 포함하는 Python 딕셔너리입니다. 압력 파라미터의 유효한 키와 값은 CompressionParameter 문서에 설명되어 있습니다.

zstd_dict 인자는 압축 효율을 높이기 위해 학습된 데이터를 포함하는 ZstdDict 인스턴스입니다. Zstandard 딕셔너리를 생성하려면 train_dict() 함수를 사용할 수 있습니다.

compression.zstd.decompress(data, zstd_dict=None, options=None)

data (bytes-like object)를 압축 해제하여, 압축되지 않은 데이터를 bytes 객체로 반환합니다.

options 인자는 고급 압력 해제 파라미터를 포함하는 Python 딕셔너리입니다. 압력 해제 파라미터의 유효한 키와 값은 DecompressionParameter 문서에 설명되어 있습니다.

zstd_dict 인자는 압력 중에 사용된 학습 데이터를 포함하는 ZstdDict 인스턴스입니다. 이는 압축 시 사용된 것과 동일한 Zstandard 딕셔너리여야 합니다.

data 가 여러 개의 개별 압축 프레임의 연결인 경우, 이 모든 프레임을 압력 해제하고 결과들을 이어붙여 반환합니다.

class compression.zstd.ZstdCompressor(level=None, options=None, zstd_dict=None)

증분적으로 데이터를 압축하는 데 사용할 수 있는 압축기 객체를 생성합니다.

단일 데이터 청크를 더 편리하게 압력하는 방법을 확인하려면 모듈 수준 함수인 compress() 를 참조하십시오.

level 인자는 압축 수준을 제어하는 정수입니다. leveloptions 에서 CompressionParameter.compression_level 을 설정하는 것의 대안입니다. level 에 전달할 수 있는 값들을 확인하려면 compression_level 에 대한 bounds() 를 사용하십시오. 고급 압축 옵션이 필요한 경우, level 인자를 생략하고 options 딕셔너리에서 CompressionParameter.compression_level 파라미터를 설정해야 합니다.

options 인자는 고급 압축 파라미터를 포함하는 Python 딕셔너리입니다. 압력 파라미터의 유효한 키와 값은 CompressionParameter 문서에 설명되어 있습니다.

zstd_dict 인자는 압력 효율을 높이기 위해 학습된 데이터를 포함하는 선택적인 ZstdDict 인스턴스입니다. Zstandard 딕셔너리를 생성하려면 train_dict() 함수를 사용할 수 있습니다.

compress(data, mode=ZstdCompressor.CONTINUE)

data\( bytes-like object)를 압축하여, 가능하다면 압축된 데이터가 포함된 bytes 객체와 함께 반환하거나, 그렇지 않으면 빈 bytes 객체를 반환합니다. data\의 일부는 나중에 compress()\ 및 flush()\ 호출에 사용하기 위해 내부적으로 버퍼링 될 수 있습니다. 반환된 데이터는 compress() 메서드에 대한 이전 호출의 출력과 연결되어야 합니다.

mode 인자는 ZstdCompressor 속성인 CONTINUE, FLUSH_BLOCK 또는 FLUSH_FRAME 중 하나입니다.

모든 데이터가 압축기에 제공되면 flush() 메서드를 호출하여 압력 공정을 마무리하십시오. modeFLUSH_FRAME 으로 설정하고 compress() 를 호출한 경우, 새로운 빈 프레임이 기록되므로 flush() 를 호출해서는 안 됩니다.

flush(mode=ZstdCompressor.FLUSH_FRAME)

압력 공정을 마무리하고 압력기의 내부 버퍼에 저장된 데이터를 포함하는 bytes 객체를 반환합니다.

mode 인자는 ZstdCompressor 속성인 FLUSH_BLOCK 또는 FLUSH_FRAME 입니다.

set_pledged_input_size(size)

다음 프레임에 제공될 압력 해제 데이터의 양인 size 를 지정합니다. CompressionParameter.content_size_flagFalse 또는 0 이 아닌 경우, size 는 다음 프레임의 헤더에 기록됩니다. 크기가 0 이면 프레임이 비어 있음을 의미합니다. sizeNone 인 경우 프레임 헤더에서 프레임 크기 정보를 생략합니다. 압력 해제된 데이터의 크기를 포함하는 프레임은 특히 높은 압력 수준에서 압력 해제 시 메모리를 적게 사용합니다.

last_modeFLUSH_FRAME 이 아니면 압력기가 프레임 시작 지점이 아니므로 ValueError 가 발생합니다. 약속된 크기가 compress() 에 제공된 데이터의 실제 크기와 일치하지 않으면, 이후 compress() 또는 flush() 호출 시 ZstdError 가 발생할 수 있으며 마지막 데이터 청크가 손실될 수 있습니다.

After flush() or compress() are called with mode FLUSH_FRAME, the next frame will not include the frame size into the header unless set_pledged_input_size() is called again.

CONTINUE

=None

FLUSH_BLOCK

데이터 스트림에 블록을 완전히 작성하고 기록합니다. 지금까지 반환된 데이터는 즉시 압축 해제될 수 있습니다. 이전 데이터는 compress() 호출로 생성되는 향후 블록에서 여전히 참조되어 압축률을 개선할 수 있습니다.

FLUSH_FRAME

Complete and write out a frame. Future data provided to compress() will be written into a new frame and cannot reference past data.

last_mode

The last mode passed to either compress() or flush(). The value can be one of CONTINUE, FLUSH_BLOCK, or FLUSH_FRAME. The initial value is FLUSH_FRAME, signifying that the compressor is at the start of a new frame.

class compression.zstd.ZstdDecompressor(zstd_dict=None, options=None)

=None

For a more convenient way of decompressing an entire compressed stream at once, see the module-level function decompress().

options 인자는 고급 압력 해제 파라미터를 포함하는 Python 딕셔너리입니다. 압력 해제 파라미터의 유효한 키와 값은 DecompressionParameter 문서에 설명되어 있습니다.

zstd_dict 인자는 압력 중에 사용된 학습 데이터를 포함하는 ZstdDict 인스턴스입니다. 이는 압축 시 사용된 것과 동일한 Zstandard 딕셔너리여야 합니다.

참고

This class does not transparently handle inputs containing multiple compressed frames, unlike the decompress() function and ZstdFile class. To decompress a multi-frame input, you should use decompress(), ZstdFile if working with a file object, or multiple ZstdDecompressor instances.

decompress(data, max_length=-1)

data\( bytes-like object)를 압축 해제하고, 압축되지 않은 데이터를 바이트열로 반환합니다. data\의 일부는 나중에 decompress()\를 호출할 때 사용하기 위해 내부적으로 버퍼링 될 수 있습니다. 반환된 데이터는 decompress() 메서드에 대한 이전 호출의 출력과 연결되어야 합니다.

max_length 가 음수가 아니면, 최대 max_length 바이트의 압축 해제된 데이터를 반환합니다. 이 한계에 도달하고 추가 출력을 생성할 수 있으면, needs_input 어트리뷰트가 False 로 설정됩니다. 이 경우, 다음 decompress() 호출은 datab'' 로 제공하여 더 많은 출력을 얻을 수 있습니다. 따라서 전체 내용은 다음과 같이 읽을 수 있습니다:

process_output(d.decompress(data, max_length))
while not d.eof and not d.needs_input:
    process_output(d.decompress(b"", max_length))

모든 입력 데이터가 압축 해제되어 반환되었다면 (이는 max_length 바이트보다 적거나, 또는 max_length 가 음수였기 때문일 수 있음), needs_input 어트리뷰트는 True 로 설정됩니다.

Attempting to decompress data after the end of a frame will raise a ZstdError. Any data found after the end of the frame is ignored and saved in the unused_data attribute.

eof

=None

unused_data

=None

=None

needs_input

decompress() 메서드가 새로운 압축 입력을 요구하기 전에 더 많은 압축 해제된 데이터를 제공할 수 있으면 False 입니다.

=None

compression.zstd.train_dict(samples, dict_size)

Zstandard 딕셔너리를 학습시켜 ZstdDict 인스턴스를 반환합니다. Zstandard 딕셔너리는 반복성이 적어 압축하기 어려웠던 작은 크기의 데이터도 더 효율적으로 압축할 수 있게 해줍니다. 여러 유사한 그룹의 데이터를 압축하는 경우 (예: 유사한 파일), Zstandard 딕셔너리를 사용하면 압축률과 속도를 크게 향상시킬 수 있습니다.

samples 인수는 (bytes 객체의 이터러블)로, Zstandard 딕셔너리 학습에 사용되는 샘플 집합입니다.

=None

compression.zstd.finalize_dict(zstd_dict, /, samples, dict_size, level)

=None

The zstd_dict argument is a ZstdDict instance with the dict_content containing the raw dictionary contents.

samples 인수는 (bytes 객체의 이터러블)으로, Zstandard 딕셔너리를 생성하는 데 사용되는 샘플 데이터를 포함합니다.

The dict_size argument, an integer, is the maximum size (in bytes) the Zstandard dictionary should be. See train_dict() for suggestions on the maximum dictionary size.

=None

class compression.zstd.ZstdDict(dict_content, /, *, is_raw=False)

A wrapper around Zstandard dictionaries. Dictionaries can be used to improve the compression of many small chunks of data. Use train_dict() if you need to train a new dictionary from sample data.

dict_content 인수는 (bytes-like object)으로, 이미 학습된 딕셔너리 정보입니다.

is_raw 인수는 부울 값이며, dict_content 의 의미를 제어하는 고급 매개변수입니다. Truedict_content 가 형식 제한이 없는 “원시 콘텐츠” 딕셔너리임을 의미합니다. Falsetrain_dict() 나 외부 zstd CLI와 같은 Zstandard 함수로 생성된 일반적인 Zstandard 딕셔너리임을 의미합니다.

함수에 ZstdDict 를 전달할 때, as_digested_dictas_undigested_dict 속성을 사용하여 zstd_dict 인수로 전달함으로써 딕셔너리가 로드되는 방식을 제어할 수 있습니다. 예를 들어, compress(data, zstd_dict=zd.as_digested_dict) 와 같습니다. 딕셔너리를 디제스팅하는 것은 Zstandard 딕셔너리를 로드하는 과정에서 발생하는 비용이 큰 작업입니다. 압축 또는 압축 해제를 여러 번 호출할 때 디제스티드 딕셔너리를 전달하면 딕셔너리 로딩 오버헤드를 줄일 수 있습니다.

=None

=None

=None

=None

=None

=None

ZstdDict internally caches the dictionary

=None

=None

If passing a ZstdDict without any attribute, an undigested dictionary is passed by default when compressing and a digested dictionary is generated if necessary and passed by default when decompressing.

dict_content

=None

dict_id

=None

=None

=None

참고

The meaning of 0 for ZstdDict.dict_id is different from the dictionary_id attribute to the get_frame_info() function.

as_digested_dict

=None

as_undigested_dict

=None

=None

class compression.zstd.CompressionParameter

An IntEnum containing the advanced compression parameter keys that can be used when compressing data.

bounds() 메서드는 모든 속성에 사용되어 해당 매개변수의 유효한 값을 가져올 수 있습니다.

=None

Example getting the lower and upper bound of compression_level:

=None

Example setting the window_log to the maximum size:

_lower, upper = CompressionParameter.window_log.bounds()
options = {CompressionParameter.window_log: upper}
compress(b'venezuelan beaver cheese', options=options)
bounds()

압축 매개변수의 정수 범위, (lower, upper) 튜플을 반환합니다. 이 메서드는 경계값을 검색하려는 속성에 호출해야 합니다. 예를 들어, compression_level 의 유효한 값을 얻으려면 CompressionParameter.compression_level.bounds() 의 결과를 확인할 수 있습니다.

=None

compression_level

=None

=None

Setting the level to zero uses COMPRESSION_LEVEL_DEFAULT.

window_log

=None

=None

hash_log

Size of the initial probe table, as a power of two. The resulting memory usage is 1 << (hash_log+2) bytes. Larger tables improve compression ratio of strategies <= dfast, and improve compression speed of strategies > dfast.

=None

chain_log

다중 프로브 검색 테이블의 크기이며, 2의 거듭제곱 단위입니다. 결과 메모리 사용량은 1 << (chain_log+2) 바이트입니다. 더 큰 테이블일수록 압축 성능이 좋아지고 속도는 느려집니다. 이 매개 변수는 fast 전략에서는 효과가 없습니다. 하지만 dfast 전략을 사용할 때도 유용하며, 이때는 보조 프로브 테이블을 정의합니다.

=None

search_log

검색 시도 횟수이며, 2의 거듭제곱 단위입니다. 시도 횟수가 많을수록 압축 성능이 좋아지고 속도는 느려집니다. 이 매개 변수는 fastdfast 전략에서는 쓸모가 없습니다.

=None

min_match

검색된 일치 항목의 최소 크기입니다. 값이 클수록 압축 및 압축 해제 속도는 증가하지만 비율은 감소합니다. Zstandard는 여전히 더 작은 크기의 일치 항목을 찾을 수 있지만, 이 크기와 그보다 큰 크기를 찾도록 검색 알고리즘을 조정하는 것뿐입니다. 모든 전략이 < btopt 이전일 경우, 기본 최소값은 4 이고, 모든 전략이 > fast 인 경우, 유효 최대값은 6 입니다.

=None

target_length

The impact of this field depends on the selected Strategy.

btopt, btultrabtultra2 전략의 경우, 이 값은 검색을 중지하는 데 “충분히 좋다”고 간주되는 일치 항목의 길이입니다. 값이 클수록 압축률이 좋아지지만, 압축 속도는 느려집니다.

전략 fast 의 경우, 이는 매치 샘플링 사이의 거리를 의미합니다. 값이 클수록 압축 속도는 빨라지지만 압축률은 낮아집니다.

=None

strategy

선택한 전략의 값이 클수록 zstd가 사용하는 압축 기술이 더 복잡해지며, 결과적으로 압력률은 높아지지만 압축 속도는 느려집니다.

더 보기

Strategy

enable_long_distance_matching

긴 거리 매칭(long distance matching)을 사용하면 더 먼 거리에서 큰 매치를 찾아내어 대용량 입력에 대한 압축률을 개선할 수 있습니다. 이는 메모리 사용량과 윈도우 크기를 증가시킵니다.

True 또는 1 은 긴 거리 매칭을 활성화하며, False 또는 0 은 이를 비활성화합니다.

이 파라미터를 활성화하면 다른 값으로 명시적으로 설정하지 않는 한 기본 설정은 :attr:!window_log`가 128 MiB 이상이고 압축 전략이 btopt 이상(압축 레벨 16 이상)인 경우 기본적으로 활성화됩니다.

ldm_hash_log

2의 거듭제곱 형태인 긴 거리 매칭용 테이블 크기입니다. 값이 클수록 메모리 사용량과 압축률이 증가하지만 압축 속도는 감소합니다.

=None

ldm_min_match

긴 거리 매칭기(long distance matcher)의 최소 매치 크기입니다. 값이 너무 크거나 작으면 압축률이 떨어질 수 있습니다.

=None

ldm_bucket_size_log

충돌 해결을 위한 긴 거리 매칭기 해시 테이블 내 각 버킷의 로그 크기입니다. 값이 클수록 충돌 해결이 개선되지만 압축 속도는 느려집니다.

=None

ldm_hash_rate_log

긴 거리 매칭기 해시 테이블에 항목을 삽입하거나 검색하는 빈도입니다. 값이 클수록 압축 속도가 향상됩니다. 기본값에서 크게 벗어나면 압축률이 저하될 가능성이 높습니다.

=None

content_size_flag

압축 전에 데이터 크기를 미리 알 수 있는 경우, 해당 크기를 Zstandard 프레임 헤더에 기록합니다.

이 플래그는 다음 시나리오에서만 효과가 있습니다:

그 외의 모든 압축 호출은 프레임 헤더에 크기 정보를 기록하지 않을 수 있습니다.

True 또는 1 은 콘텐츠 크기 플래그를 활성화하며, False 또는 0 은 비활성화합니다.

checksum_flag

압축되지 않은 콘텐츠의 XXHash64를 사용한 4바이트 체크섬이 각 프레임 끝에 기록됩니다. Zstandard의 압축 해제 코드가 이 체크섬을 검증하며, 일치하지 않을 경우 ZstdError 예외가 발생합니다.

True 또는 1 은 체크섬 생성을 활성화하며, False 또는 0 은 비활성화합니다.

dict_id_flag

ZstdDict 를 사용하여 압축할 때, 딕셔너리 ID가 프레임 헤더에 기록됩니다.

True 또는 1 은 딕셔너리 ID 저장을 활성화하며, False 또는 0 은 비활성화합니다.

nb_workers

병렬 압축을 위해 생성할 스레드 수를 선택합니다. nb_workers 가 0보다 크면 멀티스레드 압축이 활성화되며, 값 1 은 “단일 스레드 멀티스레드 모드”를 의미합니다. 작업자(worker) 수가 많을수록 속도는 향상되지만 메모리 사용량이 증가하고 압축률이 약간 낮아집니다.

값이 0이면 멀티스레딩이 비활성화됩니다.

job_size

압축 작업의 크기(바이트 단위)입니다. 이 값은 nb_workers 가 1 이상일 때만 적용됩니다. 각 압축 작업은 병렬로 완료되므로, 이 값은 활성 스레드 수에 간접적인 영향을 미칠 수 있습니다.

=None

overlap_log

압축 중 뒤쪽을 내다보는(look behind) 윈도우에서 사용하기 위해 이전 작업(스레드)으로부터 재로드할 데이터의 양을 설정합니다. 이 값은 nb_workers 가 1 이상일 때만 사용됩니다. 허용되는 범위는 0에서 9까지입니다.

  • 0은 중첩(overlap) 양을 동적으로 설정함을 의미합니다

  • 1은 중첩이 없음을 의미합니다

  • 9는 이전 작업의 전체 윈도우 크기를 사용함을 의미합니다

각 증가는 오버랩 크기를 절반/두 배로 줄입니다. “8”은 window_size/2 의 오버랩을, “7”은 window_size/4 의 오버랩을 의미합니다.

class compression.zstd.DecompressionParameter

데이터 압축 해제 시 사용할 수 있는 고급 압축 해제 파라미터 키를 포함하는 IntEnum 입니다. 파라미터는 선택 사항이며, 생략된 파라미터는 값이 자동으로 선택됩니다.

bounds() 메서드는 모든 속성에 사용되어 해당 매개변수의 유효한 값을 가져올 수 있습니다.

window_log_max 를 최대 크기로 설정하는 예제:

data = compress(b'Some very long buffer of bytes...')

_lower, upper = DecompressionParameter.window_log_max.bounds()

options = {DecompressionParameter.window_log_max: upper}
decompress(data, options=options)
bounds()

압축 해제 파라미터의 정수 범위인 (lower, upper) 튜플을 반환합니다. 이 메서드는 범위를 확인하려는 속성에서 호출해야 합니다.

=None

window_log_max

압축 해제 중에 사용되는 윈도우의 최대 크기에 대한 밑이 2인 로그 값입니다. 이 설정은 데이터를 압축 해제할 때 사용하는 메모리 양을 제한하는 데 유용합니다. 최대 윈도우 크기가 클수록 압축 해제 속도가 빨라집니다.

=None

class compression.zstd.Strategy

압축 전략을 포함하는 IntEnum 입니다. 번호가 높은 전략일수록 더 복잡하고 느린 압축 방식을 따릅니다.

참고

Strategy 의 속성 값은 zstd 버전에 따라 변하지 않을 수도 있습니다. 오직 속성의 순서만 신뢰할 수 있습니다. 속성은 아래와 같은 순서로 나열됩니다.

다음과 같은 전략을 사용할 수 있습니다:

fast
dfast
greedy
lazy
lazy2
btlazy2
btopt
btultra
btultra2

기타

compression.zstd.get_frame_info(frame_buffer)

Zstandard 프레임에 대한 메타데이터를 포함하는 FrameInfo 객체를 가져옵니다. 프레임은 내부에 포함된 압축 데이터와 관련된 메타데이터를 포함합니다.

class compression.zstd.FrameInfo

Zstandard 프레임과 관련된 메타데이터입니다.

decompressed_size

프레임의 압축 해제된 내용 크기입니다.

dictionary_id

프레임 압축 해제에 필요한 Zstandard 딕셔너리 ID를 나타내는 정수입니다. 0 은 프레임 헤더에 딕셔너리 ID가 기록되지 않았음을 의미합니다. 이는 Zstandard 딕셔너리가 필요하지 않거나, 필요한 딕셔너리의 ID가 기록되지 않았음을 의미할 수 있습니다.

compression.zstd.COMPRESSION_LEVEL_DEFAULT

Zstandard의 기본 압축 레벨은 3 입니다.

compression.zstd.zstd_version_info

실행 중인 zstd 라이브러리의 버전 번호를 정수 튜플(주, 부, 릴리스)로 나타냅니다.

예제

압축된 파일 읽기:

from compression import zstd

with zstd.open("file.zst") as f:
    file_content = f.read()

압축된 파일 생성:

from compression import zstd

data = b"Insert Data Here"
with zstd.open("file.zst", "w") as f:
    f.write(data)

메모리에서 데이터 압축하기:

from compression import zstd

data_in = b"Insert Data Here"
data_out = zstd.compress(data_in)

증분 압축:

from compression import zstd

comp = zstd.ZstdCompressor()
out1 = comp.compress(b"Some data\n")
out2 = comp.compress(b"Another piece of data\n")
out3 = comp.compress(b"Even more data\n")
out4 = comp.flush()
# 모든 부분 결과를 결합합니다:
result = b"".join([out1, out2, out3, out4])

이미 열려 있는 파일에 압축된 데이터 쓰기:

from compression import zstd

with open("myfile", "wb") as f:
    f.write(b"This data will not be compressed\n")
    with zstd.open(f, "w") as zstf:
        zstf.write(b"This *will* be compressed\n")
    f.write(b"Not compressed\n")

압축 파라미터를 사용하여 압축된 파일 생성:

from compression import zstd

options = {
   zstd.CompressionParameter.checksum_flag: 1
}
with zstd.open("file.zst", "w", options=options) as f:
    f.write(b"Mind if I squeeze in?")

분실물 보관소