zip 아카이브에서 .txt 파일만 골라서 추출하려면, 압축 파일 내부의 모든 파일 목록을 하나씩 순회하면서 각 파일이 텍스트 파일인지 확인하고, 조건에 맞는 파일만 추출하면 됩니다. 이 작업에는 Python 기본 라이브러리인 zipfile 모듈과 그 extract() 함수를 활용할 수 있습니다.
기본 예제 코드
import zipfile
my_zip = zipfile.ZipFile('my_zip_file.zip') # 여기에 zip 파일 이름을 지정하세요
storage_path = '.'
for file in my_zip.namelist():
if my_zip.getinfo(file).filename.endswith('.txt'):
my_zip.extract(file, storage_path) # 텍스트 파일이면 현재 폴더에 추출
위 코드를 실행하면 my_zip_file.zip 파일이 열리고, 그 안에 들어 있는 모든 .txt 파일만 선별되어 현재 디렉터리(.)에 저장됩니다.
코드 동작 방식
- zipfile.ZipFile('my_zip_file.zip'): 지정한 zip 파일을 읽기 모드로 엽니다.
- namelist(): 압축 파일 내부에 포함된 모든 파일과 폴더의 이름 목록을 반환합니다.
- getinfo(file).filename.endswith('.txt'): 각 항목의 파일 이름이
.txt로 끝나는지 검사하여 텍스트 파일 여부를 판별합니다. - extract(file, storage_path): 조건을 만족하는 파일만 지정한 경로에 실제로 추출합니다.
알아두면 좋은 팁
- Python 3에서는 클래스 이름이 정확히
ZipFile(대문자 F)이므로 오타에 주의해야 합니다. - 확장자가
.TXT,.Txt처럼 대소문자가 섞여 있을 가능성이 있다면filename.lower().endswith('.txt')형태로 비교하는 것이 안전합니다. - zip 내부의 폴더 구조까지 그대로 유지하고 싶다면
extract()가 자동으로 경로를 재현해 주므로 별도 처리 없이 사용할 수 있습니다.