파이썬을 이용한 압축 해제와 동시에 파일 이름 변경
특정 사이트에서 대량의 압축된 파일을 받아 하나의 디렉터리에 풀어야 하는 미션이 떨어졌다.
문제는 같은 파일 명이 중복으로 발생할 수 있다.
이에 대한 해결책으로 다음 2개의 방법으로 고민했다.
- 파일 압축 해제 후 MV 명령어로 이름 변경
- 압축을 해제할 때 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 값으로 저장된다.