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 모듈은 다음 내용을 포함합니다:
증분(incremental) 압축 및 해제를 위한
ZstdCompressor와ZstdDecompressor클래스.일괄(one-shot) 압축 및 해제를 위한
compress()와decompress()함수.Zstandard 딕셔너리를 학습하고 관리하기 위한
train_dict(),finalize_dict()함수와ZstdDict클래스.고급 압축 및 해제 파라미터 설정을 위한
CompressionParameter,DecompressionParameter, 그리고Strategy클래스.
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인스턴스입니다.ZstdFile은detach()및truncate()를 제외한io.BufferedIOBase에서 지정하는 모든 멤버를 지원합니다. 이터레이션과with문이 지원됩니다.다음 메서드 및 속성도 제공됩니다:
- peek(size=-1)¶
파일 위치를 전진시키지 않고 버퍼링된 데이터를 반환합니다. EOF에 도달하지 않은 한 최소 1바이트의 데이터가 반환됩니다. 반환되는 정확한 바이트 수는 지정되지 않습니다( size 인자는 무시됨).
- mode¶
읽기용은
'rb', 쓰기용은'wb'입니다.
- name¶
The name of the Zstandard file. Equivalent to the
nameattribute of the underlying file object.
메모리에서 데이터 압축 및 해제¶
- compression.zstd.compress(data, level=None, options=None, zstd_dict=None)¶
data (bytes-like object)를 압축하여, 압축된 데이터를
bytes객체로 반환합니다.level 인자는 압축 수준을 제어하는 정수입니다. level 은 options 에서
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 인자는 압축 수준을 제어하는 정수입니다. level 은 options 에서
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()메서드를 호출하여 압력 공정을 마무리하십시오. mode 를FLUSH_FRAME으로 설정하고compress()를 호출한 경우, 새로운 빈 프레임이 기록되므로flush()를 호출해서는 안 됩니다.
- flush(mode=ZstdCompressor.FLUSH_FRAME)¶
압력 공정을 마무리하고 압력기의 내부 버퍼에 저장된 데이터를 포함하는
bytes객체를 반환합니다.mode 인자는
ZstdCompressor속성인FLUSH_BLOCK또는FLUSH_FRAME입니다.
- set_pledged_input_size(size)¶
다음 프레임에 제공될 압력 해제 데이터의 양인 size 를 지정합니다.
CompressionParameter.content_size_flag이False또는0이 아닌 경우, size 는 다음 프레임의 헤더에 기록됩니다. 크기가0이면 프레임이 비어 있음을 의미합니다. size 가None인 경우 프레임 헤더에서 프레임 크기 정보를 생략합니다. 압력 해제된 데이터의 크기를 포함하는 프레임은 특히 높은 압력 수준에서 압력 해제 시 메모리를 적게 사용합니다.last_mode가FLUSH_FRAME이 아니면 압력기가 프레임 시작 지점이 아니므로ValueError가 발생합니다. 약속된 크기가compress()에 제공된 데이터의 실제 크기와 일치하지 않으면, 이후compress()또는flush()호출 시ZstdError가 발생할 수 있으며 마지막 데이터 청크가 손실될 수 있습니다.After
flush()orcompress()are called with modeFLUSH_FRAME, the next frame will not include the frame size into the header unlessset_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()orflush(). The value can be one ofCONTINUE,FLUSH_BLOCK, orFLUSH_FRAME. The initial value isFLUSH_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 andZstdFileclass. To decompress a multi-frame input, you should usedecompress(),ZstdFileif working with a file object, or multipleZstdDecompressorinstances.- decompress(data, max_length=-1)¶
data\( bytes-like object)를 압축 해제하고, 압축되지 않은 데이터를 바이트열로 반환합니다. data\의 일부는 나중에
decompress()\를 호출할 때 사용하기 위해 내부적으로 버퍼링 될 수 있습니다. 반환된 데이터는decompress()메서드에 대한 이전 호출의 출력과 연결되어야 합니다.max_length 가 음수가 아니면, 최대 max_length 바이트의 압축 해제된 데이터를 반환합니다. 이 한계에 도달하고 추가 출력을 생성할 수 있으면,
needs_input어트리뷰트가False로 설정됩니다. 이 경우, 다음decompress()호출은 data 를b''로 제공하여 더 많은 출력을 얻을 수 있습니다. 따라서 전체 내용은 다음과 같이 읽을 수 있습니다: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 theunused_dataattribute.
- 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
ZstdDictinstance with thedict_contentcontaining 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 의 의미를 제어하는 고급 매개변수입니다.
True는 dict_content 가 형식 제한이 없는 “원시 콘텐츠” 딕셔너리임을 의미합니다.False는train_dict()나 외부 zstd CLI와 같은 Zstandard 함수로 생성된 일반적인 Zstandard 딕셔너리임을 의미합니다.함수에
ZstdDict를 전달할 때,as_digested_dict및as_undigested_dict속성을 사용하여zstd_dict인수로 전달함으로써 딕셔너리가 로드되는 방식을 제어할 수 있습니다. 예를 들어,compress(data, zstd_dict=zd.as_digested_dict)와 같습니다. 딕셔너리를 디제스팅하는 것은 Zstandard 딕셔너리를 로드하는 과정에서 발생하는 비용이 큰 작업입니다. 압축 또는 압축 해제를 여러 번 호출할 때 디제스티드 딕셔너리를 전달하면 딕셔너리 로딩 오버헤드를 줄일 수 있습니다.=None¶ =None
=None
=None
=None
=None
ZstdDictinternally caches the dictionary=None
=None
If passing a
ZstdDictwithout 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
0forZstdDict.dict_idis different from thedictionary_idattribute to theget_frame_info()function.
- as_digested_dict¶
=None
- as_undigested_dict¶
=None
=None¶
- class compression.zstd.CompressionParameter¶
An
IntEnumcontaining 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_logto 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의 거듭제곱 단위입니다. 시도 횟수가 많을수록 압축 성능이 좋아지고 속도는 느려집니다. 이 매개 변수는
fast및dfast전략에서는 쓸모가 없습니다.=None
- min_match¶
검색된 일치 항목의 최소 크기입니다. 값이 클수록 압축 및 압축 해제 속도는 증가하지만 비율은 감소합니다. Zstandard는 여전히 더 작은 크기의 일치 항목을 찾을 수 있지만, 이 크기와 그보다 큰 크기를 찾도록 검색 알고리즘을 조정하는 것뿐입니다. 모든 전략이 <
btopt이전일 경우, 기본 최소값은4이고, 모든 전략이 >fast인 경우, 유효 최대값은6입니다.=None
- target_length¶
The impact of this field depends on the selected
Strategy.btopt,btultra및btultra2전략의 경우, 이 값은 검색을 중지하는 데 “충분히 좋다”고 간주되는 일치 항목의 길이입니다. 값이 클수록 압축률이 좋아지지만, 압축 속도는 느려집니다.전략
fast의 경우, 이는 매치 샘플링 사이의 거리를 의미합니다. 값이 클수록 압축 속도는 빨라지지만 압축률은 낮아집니다.=None
- 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 프레임 헤더에 기록합니다.
이 플래그는 다음 시나리오에서만 효과가 있습니다:
원샷(one-shot) 압축을 위해
compress()를 호출하는 경우ZstdCompressor.FLUSH_FRAME모드를 사용하여 단 한 번의ZstdCompressor.compress()호출로 프레임에 포함될 모든 압축 데이터를 제공하는 경우현재 프레임에 대해
ZstdCompressor.compress()를 호출하기 전에, 압축기에 제공될 정확한 양의 데이터를 포함하여ZstdCompressor.set_pledged_input_size()를 호출하는 경우입니다. 새로운 프레임마다ZstdCompressor.set_pledged_input_size()를 호출해야 합니다.
그 외의 모든 압축 호출은 프레임 헤더에 크기 정보를 기록하지 않을 수 있습니다.
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
기타¶
- 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?")