bzip2는 파일 압축 및 압축 해제를 위한 오픈 소스 알고리즘입니다. Python의 bz2 모듈은 프로그래밍 방식으로 bzip2 알고리즘을 구현하는 기능을 제공합니다.
open() 함수는 이 모듈의 기본 인터페이스입니다.
열기()
이 함수는 bzip2 압축 파일을 열고 파일 객체를 반환합니다. 파일은 읽기/쓰기 권한이 있는 바이너리/텍스트 모드로 열 수 있습니다. 이 함수는 1에서 9 사이의 compressionlevel 인수를 기반으로 압축을 수행합니다.
쓰기()
파일이 'w' 또는 'wb' 모드로 열렸을 때, 이 기능은 파일 객체에서 사용할 수 있습니다. 바이너리 모드에서는 압축된 바이너리 데이터를 파일에 씁니다. 일반 텍스트 모드에서는 파일 객체를 TetIOWrapper 객체로 감싸 인코딩을 수행합니다.
읽기() − 읽기 모드에서 열었을 때 읽어서 압축되지 않은 데이터를 반환하는 함수입니다.
다음 코드는 압축된 데이터를 bzip2 파일에 씁니다.
>>> f = bz2.open("test.bz2", "wb") >>> data = b'Welcome to TutorialsPoint' >>> f.write(data) >>> f.close()
현재 디렉토리에 test.bz2 파일이 생성됩니다. 압축 풀기 도구에는 '테스트' 파일이 표시됩니다. 이 test.bz2 파일에서 압축되지 않은 데이터를 읽으려면 다음 코드를 사용하십시오.
>>> f = bz2.open("test.bz2", "rb") >>> data=f.read() >>> data b'Welcome to TutorialsPoint'
bz2 모듈은 BZ2File 클래스도 정의합니다. 해당 객체는 생성자에 대한 모드 매개변수에 따라 압축기 및 압축 해제기 역할을 합니다.
BZ2파일()
이것은 생성자입니다. open() 함수와 마찬가지로 파일 및 모드 매개변수가 필요합니다. 기본적으로 압축 수준은 9이며 1에서 9 사이일 수 있습니다.
BZ2압축기()
이 함수는 Incremental 압축기 클래스의 객체를 반환합니다. 이 클래스에서 compress() 메서드를 호출할 때마다 압축된 데이터 청크가 반환됩니다. 여러 청크를 연결하여 최종적으로 bzip2 압축 파일에 쓸 수 있습니다.
플러시()
이 메서드는 버퍼를 비우고 압축된 개체에 추가할 데이터 청크를 반환합니다.
BZ2Decompressor()
이 함수는 증분 압축해제기의 객체를 반환합니다. 압축 해제된 데이터의 개별 덩어리가 플러드 데이터와 함께 연결되어 압축되지 않은 데이터를 형성합니다.
다음 예제에서는 먼저 목록 개체의 각 iem을 압축하고 연결된 바이트 개체를 파일에 씁니다. 데이터는 BZ2Decompressor 개체에 의해 검색됩니다.
>>> data = [b'Hello World', b'How are you?', b'welcome to Python'] >>> obj = bz2.BZ2Compressor() >>> f = bz2.open("test.bz2", "wb") >>> d1 = obj.compress(data[0]) >>> d2 = obj.compress(data[1]) >>> d3 = obj.compress(data[2]) >>> d4 = obj.flush() >>> d1,d2,d3,d4 (b'', b'', b'', b'BZh91AY&SYS\x9a~\x99\x00\x00\x03\x1f\x80@\x00\x00\x00\x80@@\x80.G\x96\xa0 \x00!\xa8\xd0\x06\x9a6\x90\xa6LL\x83#\x18\x1d\x83\xee^]\x1e|\xa9\xddgu\x15G/\x1a\x8c\xd1\x90\x14\x8f\x8b\xb9"\x9c(H)\xcd?L\x80') >>> compressedobj=d1+d2+d3+d4 >>> f.write(compressedobj) >>> f.close() >>> obj=bz2.BZ2DeCompressor() >>> f=bz2.open("test.bz2", "rb") >>> data=f.read() >>> obj.decompress(data) b'Hello WorldHow are you?welcome to Python'