반응형
파일 압축하기
파일 한개 압축하기
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() : 압축파일 내의 특정 파일의 정보를 확인할 수 있음
반응형
'개발 > PyQt&Python' 카테고리의 다른 글
PyQt tablewidget에 checkbox 추가 / 정렬되게 만들기 (0) | 2022.11.11 |
---|---|
파이썬 디렉터리/파일 관련 함수 정리(os/os.path/glob,shutil) (0) | 2022.11.09 |
PyQt 하이퍼링크(QLabel, QPushButton) 달기, 스타일 변경 (0) | 2022.11.09 |
PyQt pdf파일 drag/drop으로 가져오기 (0) | 2022.11.08 |
PyInstaller - 파이썬 exe파일 만드는 방법(아이콘,파일,이미지 추가하기) (0) | 2022.11.06 |
댓글