파이썬을 이용한 압축 해제와 동시에 파일 이름 변경

특정 사이트에서 대량의 압축된 파일을 받아 하나의 디렉터리에 풀어야 하는 미션이 떨어졌다.

문제는 같은 파일 명이 중복으로 발생할 수 있다.

이에 대한 해결책으로 다음 2개의 방법으로 고민했다.

  1. 파일 압축 해제 후 MV 명령어로 이름 변경
  2. 압축을 해제할 때 PATH를 줄 수 있는가?

1번의 방법은 누구나 쉽게 할 수 있을 것 같았다.

2번의 경우 가능 한지 조차 몰라서 Python에서 압축 관련 모듈인 ZipFile을 살펴보았다.

내용을 확인 결과 압축 파일에서 하나의 파일을 읽을 수 있는 read리는 function이 있다.

이를 이용해 다음과 같이 처리하였다

with ZipFile("filename.zip") as zf:
    
    file_list = map(lambda x: "/" + str(uuid.uuid4()), zf.filelist) # 파일 개수만큼 uuid를 생성
    idx = 0
    for zip_file in zf.namelist():  # 루프를 돌며 하나의 파일을 가져옴
        target_path = zip_save_path + file_list[idx]  # 저장되는 파일 위치
        with open(target_path, "wb") as f:  # 저장되는 파일을 쓰기 모드로 오픈
            f.write(zf.read(zip_file, pwd=self.password))  # 압축된 파일을 읽어서 타깃 파일로 저장

        idx += 1 # 다음 uuid 선택

파일은 내가 원하는 위치에 uuid 값으로 저장된다.

참고자료


Posted by lahuman