반응형


Python으로 파일 복사 하는 방법

 

특정 디렉터리 안에 있는 모든 jpg 파일을 옮기거나, 머신러닝의 모델 파일들을 추려내거나, 특정 문자열을 포함한 파일만을 추출해서 복사하고 싶을 때, 파이썬을 통해 간편히 파일 복사가 가능하다.

 

import os
from glob import glob
import shutil

# 디렉터리 안에 계층 구조가 2단계 있을 때
jpg_list = glob.glob('target_dir/**/**/*.jpg')
# outputs 디렉터리 안에 있는 .pth만 가져오고 싶을 때
model_list = glob.glob('outputs/*.pth')

# 그 후, 원하는 위치로 복사
dest_list = ['your_target_dir', ..., 'your_target_dir']

for src, dest in zip(model_list, dest_list):
	# makedirs를 exist_ok 플래그와 함께 사용하면 해당 위치에 디렉터리가 없을 경우 생성함
	os.makedirs(os.path.dirname(dest), exist_ok=True)
    shutil.copy(src, dest)

 

위와 같이 glob을 통해서 특정 패턴의 파일 경로들을 추출하고, shutil을 통해서 복사하면 수작업으로 하면 굉장히 오래 걸릴 삽질을 순식간에 마무리 할 수 있다.

또한, 아마도 복사하면서 가장 많이 발생하는 이슈는, 해당 위치에 디렉터리가 존재하지 않을 때 발생하는 cannot find ~ 류의 에러일텐데, 이를 os.makedirs로 미리 만들어주고 사용하면 이슈 없이 활용이 가능하다.

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,