개발/PyQt&Python

파이썬 zipfile 모듈(python 압축파일 다루는 방법)

알 수 없는 사용자 2022. 11. 24.
반응형
파일 압축하기

파일 한개 압축하기

os.chdir('dir')   #작업 디렉터리 설정
zip = zipfile.ZipFile('dir/test.zip', 'w')   #압축파일(zip파일) 경로 지정
zip.write('dir/test.txt')   #압축할 파일 지정
zip.close()

os.chdir로 현재 작업할 경로를 설정하지 않으면 최상위 디렉터리부터 압축될 수 있으므로 현재 작업경로 지정해주기

zipfile.ZipFile('압축할 zip파일', 'w')  w는 쓰기 모드 설정이라는 뜻

zip.write('압축할 파일 지정')

 

파일 여러개 압축하기

#압축할 파일 지정
filelist = ['dir/test.txt','dir/test2.txt','dir/test3.txt']
# 압축파일(zip파일) 경로 지정
with zipfile.ZipFile('dir/test2.zip', 'w') as zip:
    for i in filelist:
        zip.write(i)
    zip.close()

with~as를 사용하는 이유는 위처럼 파일을 열고 닫는 함수를 사용할 때 사용자가 실수로 close를 하지 않을 경우 자동으로 닫히게 해 줌

for문으로 filelist의 모든 파일 압축

 

파일 압축풀기

개별파일 압축풀기

#압축해제할 파일/경로 지정
zipfile.ZipFile('dir/test2.zip').extract('dir/test.txt')

zipfile.ZipFile('압축해제할 zip파일').extract('압축해제할 파일')

zip파일내의 파일 중 하나를 골라 압축해제 할 수 있음

 

모든파일 압축풀기

zipfile.ZipFile('dir/test2.zip').extractall('dir') #압축해제할 파일 경로 지정
zipfile.ZipFile('dir/test2.zip').extractall() #경로를 지정하지 않을 경우 압축파일과 동일한 경로에 압축 해제됨

zipfile.ZipFile('압축해제할 zip파일').extractall('압축해제할 경로')

경로를 지정하지 않을 경우 zip파일이 있는 위치에 압축이 해제됨

 

zip파일 읽기

특정 파일 읽기 : read()

zip = zipfile.ZipFile('dir/test2.zip')
zip.read('dir/test.txt')

결과 : b'123123'

read('파일명') : 특정 파일의 내용을 읽어줌

 

압축파일 내의 파일목록 읽기 : namelist()

zip = zipfile.ZipFile('dir/test2.zip')
zip.namelist()

결과 : ['dir/test.txt', 'dir/test2.txt', 'dir/test3.txt']

namelist() : 압축파일 내의 파일목록을 리스트 형식으로 반환해 줌

 

압축파일 정보 확인 : getinfo()

zip = zipfile.ZipFile('dir/test2.zip')
zipinfo = zip.getinfo('dir/test.txt')
print(zipinfo)           #파일 정보
print(zipinfo.filename)  #파일명
print(zipinfo.file_size) #파일 크기
print(zipinfo.date_time) #작성일

결과 : 
<ZipInfo filename='dir/test.txt' filemode='-rw-rw-rw-' file_size=6>
dir/test.txt
6
(2022, 11, 9, 1, 47, 20)

getinfo() : 압축파일 내의 특정 파일의 정보를 확인할 수 있음

반응형

댓글

💲 추천 글