파이썬 zipfile 라이브러리: ZIP 아카이브 작업

파이썬 zipfile 라이브러리: ZIP 아카이브 작업

파이썬의 zipfile 라이브러리는 ZIP 아카이브와 상호작용하는 기능을 제공합니다. 이 라이브러리를 사용하면 ZIP 파일을 생성, 읽기, 쓰기, 압축 해제하는 등의 작업을 할 수 있습니다. 이 글에서는 zipfile 라이브러리의 주요 기능에 대해 알아보겠습니다.

1. 파이썬 zipfile 라이브러리란?

파이썬의 zipfile 라이브러리는 ZIP 아카이브 파일을 읽고 쓰는 데 사용됩니다. 이 라이브러리를 활용하면 ZIP 파일을 생성하거나, 기존 ZIP 파일에 파일을 추가하거나, ZIP 파일에서 파일을 추출하는 등의 작업을 수행할 수 있습니다.

2. zipfile 라이브러리의 주요 기능

zipfile 라이브러리는 다음과 같은 주요 기능을 제공합니다.

  • ZIP 파일 생성: 파일이나 디렉토리를 압축하여 ZIP 파일을 생성할 수 있습니다.
  • ZIP 파일 읽기: ZIP 파일의 내용을 읽어올 수 있습니다.
  • ZIP 파일 쓰기: 기존 ZIP 파일에 파일을 추가할 수 있습니다.
  • ZIP 파일 압축 해제: ZIP 파일의 내용을 추출할 수 있습니다.

. zipfile 라이브러리 사용 예제

다음은 zipfile 라이브러리의 몇 가지 주요 기능을 보여주는 예제 코드입니다.

1. ZIP 파일 생성 예제

import zipfile

# 'my_archive.zip'이라는 이름의 ZIP 파일을 쓰기 모드('w')로 열어줍니다. 
# 이 파일이 이미 존재한다면 이전 내용은 삭제되고 새로운 빈 ZIP 아카이브가 생성됩니다. 
# 파일이 존재하지 않는 경우, 새 ZIP 아카이브가 생성됩니다.
with zipfile.ZipFile('my_archive.zip', 'w') as zf:
    # 'test_1.txt' 파일을 ZIP 아카이브에 추가합니다. 
    # 이 파일의 이름은 아카이브 내에서 'test_1.txt'로 유지됩니다.
    zf.write('test_1.txt')
    # 'test_2.txt' 파일도 같은 방식으로 ZIP 아카이브에 추가합니다.
    zf.write('test_2.txt')

위 코드는 ‘test_1.txt’와 ‘test_2.txt’ 두 개의 파일을 ‘my_archive.zip’라는 ZIP 아카이브에 추가하는 코드입니다. 이때, ‘with’ 키워드를 사용하여 파일을 열면, 해당 코드 블록이 끝날 때 자동으로 파일이 닫히게 됩니다. 이렇게 하면 파일을 수동으로 닫는 것을 잊어버려서 발생할 수 있는 문제를 방지할 수 있습니다.

2. ZIP 파일 읽기 예제

import zipfile

# 'my_archive.zip'이라는 이름의 ZIP 파일을 읽기 모드('r')로 열어줍니다.
with zipfile.ZipFile('my_archive.zip', 'r') as zf:
    # ZIP 파일 내의 파일 리스트를 출력합니다.
    # namelist() 메서드는 ZIP 아카이브 내에 있는 모든 파일과 디렉토리의 이름을 리스트 형태로 반환합니다.
    print(zf.namelist())  # 출력: ['test_1.txt', 'test_2.txt']

위 코드는 ‘my_archive.zip’라는 ZIP 아카이브를 열고, 그 안에 포함된 모든 파일과 디렉토리의 이름을 출력하는 코드입니다. 마찬가지로, ‘with’ 키워드를 사용하여 파일을 열면, 해당 코드 블록이 끝날 때 자동으로 파일이 닫히게 됩니다.

3. ZIP 파일에 파일 추가 예제

import zipfile

# 'my_archive.zip'이라는 이름의 ZIP 파일을 추가 모드('a')로 열어줍니다.
# 추가 모드는 해당 ZIP 파일이 이미 존재한다면 기존의 내용에 덧붙여 새로운 파일을 추가하고, 파일이 없다면 새로 생성합니다.
with zipfile.ZipFile('my_archive.zip', 'a') as zf:
    # ZIP 파일에 'test_3.txt'라는 파일을 추가합니다.
    # write() 메서드는 지정된 파일을 ZIP 아카이브에 추가합니다.
    zf.write('test_3.txt')

위 코드는 ‘my_archive.zip’라는 ZIP 아카이브를 열고, ‘test_3.txt’라는 파일을 기존 아카이브에 추가하는 코드입니다. ‘with’ 키워드를 사용하여 파일을 열면, 해당 코드 블록이 끝날 때 자동으로 파일이 닫히게 됩니다.

4. ZIP 파일 압축 해제 예제

import zipfile

# 'my_archive.zip'이라는 이름의 ZIP 파일을 읽기 모드('r')로 열어줍니다.
with zipfile.ZipFile('my_archive.zip', 'r') as zf:
    # ZIP 파일 내의 모든 파일과 디렉토리를 현재 디렉토리 아래 'unzipped'라는 디렉토리에 압축 해제합니다.
    # extractall() 메서드는 ZIP 아카이브에 있는 모든 파일과 디렉토리를 지정된 경로에 압축 해제합니다.
    zf.extractall('unzipped')

위 코드는 ‘my_archive.zip’라는 ZIP 파일을 열고, 그 안에 포함된 모든 파일 및 디렉토리를 ‘unzipped’ 디렉토리에 압축 해제하는 코드입니다.

4. zipfile 라이브러리 주의사항

zipfile 라이브러리를 사용할 때 몇 가지 주의사항이 있습니다.

  • 압축 및 압축 해제 작업은 시스템 리소스를 많이 사용할 수 있으므로, 대용량 파일을 다룰 때는 주의가 필요합니다. 또한, 압축된 파일의 내용을 메모리에 한 번에 로드하지 않도록 주의해야 합니다.
  • 압축 해제 시에는 악성 코드가 포함된 파일을 실수로 실행하는 위험을 방지하기 위해, 알려지지 않은 출처의 ZIP 파일은 주의해서 다루어야 합니다.
  • zipfile 라이브러리는 ZIP 파일 형식에 대한 기본적인 지원만 제공합니다. 보다 고급 기능이 필요한 경우에는 외부 라이브러리를 사용하는 것이 좋습니다.

참고 자료

함께 보면 좋은 이전 게시글

위로 스크롤