77. 파이썬 zipfile tempfile 표준 라이브러리

  • 네이버 블로그 공유하기
  • 카카오톡 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기

지난 시간에는 파이썬 표준 라이브러리 중 os 에 대해서 알아보았습니다.
이번 포스팅에서는 파이썬 표준 라이브러리 중 zipfile 과 tempfile 에 대해 공부 해 보도록 하겠습니다

파이썬 표준 라이브러리

zipfile

zipfile 은 여러 개의 파일 들을 zip 형식으로 합치거나 이를 해제할 때 사용되는 모듈입니다.
아래와 같이 3개의 파이썬 파일이 있다고 해봅시다

Python
a.py
b.py
c.py

이렇게 3개의 파이썬 파일을 하나로 합쳐서 mypython.zip 이라는 파일로 만들고
이 파일들을 원래의 파이썬 파일 3개로 해제 하는 프로그램을 만들어 보겠습니다.

zipfile.ZipFile()

아래는 zipfile.ZipFile() 함수를 사용한 코드입니다.

Python
#  zip_test.py
import zipfile

# 파일 하나로 합치기
with zipfile.ZipFile('mypython.zip', 'w') as myzip:
    myzip.write('a.py')
    myzip.write('b.py')
    myzip.write('c.py')

# 하나로 합친 파일 다시 해제하기
with zipfile.ZipFile('mypython.zip') as myzip:
    myzip.extractall()

위 코드처럼 ZipFile 객체의 write() 함수로 개별 파일들을 추가하고 extreactall() 함수를 사용하면 모든 파일을 해제 할 수가 있습니다.
합쳐져 있는 파일에서 특정 파일만 해제를 하고 싶다면 아래 코드와 같이 extract() 함수를 사용을 하면 됩니다.

Python
with zipfile.ZipFile('mypython.zip') as myzip:
    myzip.extract('a.py')

만약에 파일을 압축해서 묶고 싶은 경우에는 compression, compresslevel 옵션을 사용 할 수도 있습니다.

Python
with zipfile.ZipFile('mypython.zip', 'w', compression=zipfile.Zip_LZMA, compresslevel=9) as myzip:
    (....생략....)

compression 에는 4가지의 종류가 있습니다.

  • ZIP_STORED : 압축하지 않고 파일을 zip 으로만 묶는 작업을 합니다. 속도가 빠릅니다.
  • ZIP_DEFLATED : 일반적인 ZIP 압축으로서 속도가 빠르고 압축률은 낮습니다. 그리고 호환성이 좋습니다.
  • ZIP_BZIP2 : bzip2 압축으로 압축률이 높고 속도가 느립니다.
  • ZIP_LZMA : lzma 압축으로 압축률이 높고 속도가 느립니다.(7zip 프로그램과 동일한 알고리즘으로 알려져 있습니다.)

compressionlevel 은 압축 수준을 의미하는 숫자입니다.
압축 수준은 1 에서 9 까지 사용을 하며
1 이 속도가 가장 빠르고 압축률이 낮으며
9 가 속도는 가장 느리고 압축률은 높습니다.

tempfile

파일을 임시로 만들어서 사용하는 경우에 tempfile 을 유용하게 사용할 수 있습니다.

tempfile.mkstemp()

tempfile.mkstemp() 는 중복되지 않는 임시 파일의 이름을 랜덤 하게 만들어서 리턴을 해줍니다.

Python
>>> import tempfile
>>> filename = tempfile.mkstemp()
>>> filename
(3, 'C:\\Users\\donnr\\AppData\\Local\\Temp\\tmpmbfgnpr5')
>>>

tempfile.TemporaryFile()

tempfile.TemporaryFile() 은 임시 저장 공간으로 사용할 파일 객체를 리턴을 해 줍니다.
이 파일은 기본적으로 바이너리 쓰기 모드(wb) 의 성격을 가지고 있습니다.
f.close() 가 호출이 되면 자동으로 삭제가 됩니다.

Python
>>> import tempfile
>>> f = tempfile.TemporaryFile()
>>> f.close()

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
77. 파이썬 zipfile tempfile 표준 라이브러리

Leave a Comment