Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 zip 파일에서 .txt 파일만 추출하는 방법

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()가 자동으로 경로를 재현해 주므로 별도 처리 없이 사용할 수 있습니다.