python 파이썬 zipfile 로 파일 압축하기(하위폴더 포함미포함) 압축 해제하기
이번 글은 이전글에 이은 2번째 글로 파일을 압축하는 방법에 관하여 알아보겠습니다. 최종 완전한 프로그램의 결과화면은 아래와 같습니다. 1. 프로그램을 실행하면 2.아래와 같은 윈도우GUI 화면이 나타나는데, 여기서 . 클릭하여 압축할 파일3.txt을 선택 후 열기 버튼을 클릭하면 선택한 파일이 압축할 파일 선택 부분에 나타납니다. 3. 그리고 나서 압축할 파일명을 입력3.zip 후 압축스타트 버튼을 클릭하면 실행결과에 결과 내용이 보여지고, 실제 폴더 확인결과 3.zip으로 잘 압축된 것을 확인 할 수 있습니다.
O 주요 내용
연관된 소스를 살펴보겠습니다. 1.GUI 창을 띄우기 위해 관련 모듈을 임포트하고 미리 만들어둔 UI를 로드하기 위하여 formclass변수에 할당 후 초기화 함수를 만들어 줍니다. GUI 창 띄우기 관련 체계적인 설명은 아래 링크를 참고 부탁드립니다. 2. 만들어둔 UI를 사용하기 위해서 초기화 함수 내에서 self.setupUiself 표현을 사용하여 UI를 사용할 수 있도록 해줍니다. 그리고 pushButton 선택 이벤트 발생시 startCompress함수가, toolButton 선택 이벤트 발생시 selectFiles함수가 호출되도록 하였습니다.
3. 위에서 언급했던 바와 같이 . 버튼toolButton을 클릭하면 selectFiles함수가 호출됩니다.
압축 파일 해제하기
좀 전에 압축했던 txt 파일들을 Cresult 에 풀어보았습니다. 하지만 실행해보니 이상하게 Cresult 아래에 txt 파일은 없고 test 폴더가 있습니다. os.walk 이 C 부터의 경로를 반환하는데, zipfile 이 파일 압축 시 C 부터 시작하는 이 경로 정보를 포함해서 압축하기 때문이라 합니다. 이런 일을 방지하려면 다음과 같이 작성하면 됩니다.
import osos.getcwd
zip file을 생성합니다. myzip zipfile.ZipFileCUserUserstemptestzip.zip, w zip file에 넣고 싶은 압축할 파일을 선택합니다. myzip.writeCUsersUsertemptrain.csv
zip file을 닫습니다. myzip.close 하나의 파일 압축하는 작업 반복하는 것과 동일합니다.
방식은 위1과 동일하며 with문과 for문을 통해 압축하겠습니다.
참고사항으로 압축 창에서 몇 가지 항목에 관하여 추가설명을 해보겠습니다. 위 첫 번째 사진에서 압축파일 형식이 있었으나 7z, tar, wim, zip 으로 선택하여 압축이 가능하다는 것을 알 수 있듯이 오픈소스 프리웨어답게 여러가지 선택의 기능을 담은 것 같습니다. 그리고 두 번째 사진을 보시면 압축레벨은 파일의 용량과는 상관이 없고, 압축 시 메모리 점유율에 대한 것입니다. 가끔 압축파일을 설치하는 과정에서 광고팝업창이 떠서 나도 모르게 원하지 않는 프로그램이 설치가 되지만 7zip은 그런 번거로움 없이 쉽게 설치와 압축이 가능하니 유용하게 사용해서 보시기 바랍니다.