AIHUB 압축파일 해제가 안될 때 !

ijnuyh·2025년 5월 27일

TIL

목록 보기
13/16

연구를 진행하려고 AI hub에서 데이터를 다운받았다.
그리고 압축을 풀려고 하는 도중 마주한 오류...


뭘까 이 오류.... 찾아보니 글 하나를 찾았다.
위 글의 도움을 받았다.

결론부터 말하자면, Google drive와 코랩으로 이용하자는 것.

난 마침 google drive 결제가 매달 되고있던 중이라 (2200원) 바로 이용했다.

나같은 경우는 폴더를 타고타고 들어가서 전부 압축해제를 해야했어서 바로 하나의 압축파일을 진행하니까 냅다 해당 폴더의 상위폴더에 PNG로 저장이 되었다... SAD...
1800개의 파일을 수동으로 옮기기는 좀 번거로워서 급하게 코드를 하나 짜서 돌렸다.

import os
import shutil

# 원본 폴더 경로와 대상 폴더 경로 설정
source_folder = '/content/drive/MyDrive/child_xray/Train/source'     # PNG 파일들이 있는 폴더
destination_folder = '/content/drive/MyDrive/child_xray/Train/destinaion'  # PNG 파일을 옮길 폴더

# 대상 폴더가 없으면 생성
os.makedirs(destination_folder, exist_ok=True)

# 폴더 내 모든 파일을 순회
for filename in os.listdir(source_folder):
    if filename.lower().endswith('.png'):
        src_path = os.path.join(source_folder, filename)
        dst_path = os.path.join(destination_folder, filename)
        shutil.move(src_path, dst_path)
        print(f"Moved: {filename}")

폴더를 순회해서 png 로 저장된 것만 전부 특정 폴더를 만들어서 저장시키는 코드다.


그렇지만 매번 이러기엔 번거로워서 그냥 상위폴더 경로 설정해서 한번에 싹 압축해제하는 걸로 만들었다.

import os
import zipfile

# 상위 폴더 경로 설정
root_folder = "/content/drive/MyDrive/child_xray/"

# 모든 하위 디렉토리 탐색
for dirpath, dirnames, filenames in os.walk(root_folder):
    for filename in filenames:
        if filename.lower().endswith('.zip'):
            zip_path = os.path.join(dirpath, filename)
            extract_folder = os.path.splitext(zip_path)[0]  # .zip 제거

            # 압축 해제
            try:
                with zipfile.ZipFile(zip_path, 'r') as zip_ref:
                    zip_ref.extractall(extract_folder)
                print(f"압축 해제 완료: {zip_path}")
            except zipfile.BadZipFile:
                print(f"압축 해제 실패 (손상된 ZIP): {zip_path}")

AI hub 데이터를 다운받고 압축해제 오류가 난 경우엔 위 방법을 사용해보길 바란다.

profile
ad astra per aspera

0개의 댓글