본문 바로가기
Error_극복하기

Python (여러 에러를 동반한) 대용량 ZIP 파일 한꺼번에 압축풀기

by ADELA_J 2023. 10. 25.

아무래도 빅데이터를 다루다보면 ZIP파일로 묶여 있는 경우가 많다.

요런식으로 ▼

근데 언제 일일이 하나하나 다 압축을 풀고,,,,

하나하나 불러올수 있겠는가,,,,,

 

그래서 요런 코드를 짰는데...!

6. rglob를 이용해서 입력한 경로에 있는 zip 파일을 모두 찾는다.

7-8. 그래서 그 파일 하나하를 Zipfile 함수를 이용해서 하나하나 읽어와서 

9. extractall메서드를 사용해서 압축을 풀어준다!

10.기존 zip 파일은 삭제하도록 한다.

 

라고 코드를 했으나ㅏ,,,,,,,,,,,

AttributeError: 'str' object has no attribute 'rglob'

아이코 ^^ ,,,, 그래 한번에 될리가 없지.

rglob를 읽을 수 없다고 뜨는데, 이것은 Path로 경로를 제대로 불러와줘야 한다는걸 알았다.

요렇게! 경로 앞에 Path를 적어주었다.

근데 문제는 그래도....... 되지 않아... 에러는 안 뜨는데...

압축이 풀리지 않아....

뭐가 문제인지 찾아봤더니..! 

네, 문자열로 인식되어서(ex.\n)

이스케이프 시퀀스를 처리해야했습니다.

 

그래서 백슬래시로 바꿔주고 했더니...!

PermissionError: [WinError 32] 다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다

이라는 에러가,,,, 흑흑 

그래 쉽게 가면 재미없지 암

 

파일이 열려 있어서 삭제할 수 없다는 얘기인데,,

파일은 아무것도 열려 있지 않고... 어디서 열린걸까 보던와중

 

 

그래,,, 여기가 문제였다.

with는 파일을 open하고 close하는 거까지 한꺼번에 할 수 있는데

파일을 삭제하는 os.remove 가 파일이 열리고 close되지 않은 상태로 되니까

퍼미션 에러가 뜨는것 같았다.

 

그래서 10열을 with에서 빼주었더니

무사히 파일 압축을 풀고 ZIP파일을 삭제까지 마칠 수 있었다..!

 

근데,,,,,,,,

사실 사람일이란 어떻게 될지 모르니

원본인 ZIP파일은 되도록이면 삭제안하는걸 추천한다😊