Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

bzip2 압축(bz2)에 대한 Python 지원

<시간/>

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'