Python에서는 기본 내장 모듈인 tarfile을 사용하여 tar 아카이브 파일을 손쉽게 읽고 쓸 수 있습니다. tar 파일의 압축을 해제하려면 먼저 파일을 연 다음, tarfile 모듈이 제공하는 추출 메서드를 호출하면 됩니다.
tar 파일 전체 추출하기
아카이브에 포함된 모든 파일을 한 번에 추출하려면 extractall() 메서드를 사용합니다. 이때 추출 대상 폴더를 직접 지정할 수 있습니다.
import tarfile
my_tar = tarfile.open('my_tar.tar.gz')
my_tar.extractall('./my_folder') # 압축을 해제할 폴더 지정
my_tar.close()위 코드를 실행하면 my_tar.tar.gz 파일의 모든 내용이 my_folder 디렉터리에 추출됩니다. 참고로 tarfile.open()은 파일 확장자를 자동으로 인식하므로, gzip으로 압축된 .tar.gz 파일도 별도 설정 없이 바로 열 수 있습니다.
특정 파일만 추출하기
아카이브 전체가 아니라 원하는 파일 하나만 꺼내야 할 때는 extract(filename, path) 메서드를 사용하면 됩니다. 첫 번째 인자에는 추출할 파일명을, 두 번째 인자에는 저장 경로를 전달합니다.
import tarfile
my_tar = tarfile.open('my_tar.tar.gz')
my_tar.extract('hello.txt', './my_folder')
my_tar.close()이 코드는 아카이브 안에 있는 hello.txt 파일만 골라서 my_folder에 저장합니다.
추가 팁
- with 문 활용:
with tarfile.open('my_tar.tar.gz') as my_tar:형태로 작성하면 작업 종료 후 파일이 자동으로 닫히므로 더 안전한 코드가 됩니다. - 내용 미리 확인:
getnames()메서드를 호출하면 압축을 풀기 전에 아카이브에 어떤 파일들이 들어 있는지 목록을 확인할 수 있습니다.