반응형

지정한 디렉토리의 파일을 특정 비율로 나누어 2개의 디렉토리에 저장하는 예제 코드입니다.



2024. 3. 16 최초작성




import os
import shutil
import random

def split_and_copy_files(src_folder, dest_folder1, dest_folder2, ratio=0.2):
   
    # 지정한 경로 src_folder로부터 파일 목록을 가져옵니다. 지정한 경로에 파일들이 하위 폴더로 구분이 안되어있다고 가정합니다.
    files = [f for f in os.listdir(src_folder) if os.path.isfile(os.path.join(src_folder, f))]
   
    # 파일 경로가 저장된 리스트를 뒤섞습니다.
    random.shuffle(files)

    # 지정한 비율로 인덱스를 계산합니다.
    split_idx = int(ratio * len(files))
   
    # 인덱스를 사용하여 파일 리스트를 두개로 분리합니다.
    files_to_dest1 = files[:split_idx]
    files_to_dest2 = files[split_idx:]
   
    # 폴더를 생성합니다.
    os.makedirs(dest_folder1, exist_ok=True)
    os.makedirs(dest_folder2, exist_ok=True)
   
    # 파일을 복사합니다.
    for f in files_to_dest1:
        shutil.copy2(os.path.join(src_folder, f), os.path.join(dest_folder1, f))
       
    for f in files_to_dest2:
        shutil.copy2(os.path.join(src_folder, f), os.path.join(dest_folder2, f))


src = './esc-50-audio'
dest1 = 'esc-50-audio_test'
dest2 = 'esc-50-audio_train'
split_and_copy_files(src, dest1, dest2, ratio=0.2)



반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts