파이썬에서 디렉터리(폴더) 생성하기
파이썬으로 디렉터리를 만들 때는 해당 경로가 이미 존재하는지 먼저 확인한 후 생성하는 것이 안전합니다. 대표적인 방법은 os.path.exists() 함수로 존재 여부를 검사하고, 없을 경우 os.makedirs()로 생성하는 것입니다.
1. os.path.exists()로 존재 여부 확인 후 생성
import os
if not os.path.exists('my_folder'):
os.makedirs('my_folder')
이 방식은 실행 전에 조건을 미리 점검하는 LBYL(Look Before You Leap) 스타일로, 코드가 직관적이라 초보자에게도 이해하기 쉽습니다.
2. EAFP 관용구 활용: 예외 처리 방식
파이썬에서는 "허락을 구하는 것보다 용서를 구하는 것이 쉽다(EAFP: Easier to Ask Forgiveness than Permission)"라는 관용구를 자주 사용합니다. 즉, 디렉터리가 이미 존재해서 발생하는 예외를 try-except 문으로 처리하는 방식입니다.
import os
import errno
try:
os.makedirs('my_folder')
except OSError as e:
if e.errno != errno.EEXIST:
raise
이 코드는 디렉터리가 이미 존재하는 경우(errno.EEXIST)에는 아무 작업도 하지 않고 넘어가며, 그 외의 오류는 다시 발생시켜 문제를 숨기지 않습니다.
3. pathlib 모듈 활용 (권장 방법)
파이썬 3.5 이상에서는 더 간결하고 현대적인 방법으로 pathlib 모듈을 사용할 수 있습니다. exist_ok=True 옵션 하나로 이미 존재하는 경우의 예외까지 한 번에 처리됩니다.
from pathlib import Path
Path('my_folder').mkdir(parents=True, exist_ok=True)
parents=True는 중간 경로의 상위 디렉터리가 없어도 함께 생성해 주므로, 복잡한 경로 구조를 만들 때 특히 유용합니다.
참고: os.mkdir()과 os.makedirs()의 차이
- os.mkdir(): 마지막 하위 디렉터리 하나만 생성하며, 상위 경로가 없으면 오류가 발생합니다.
- os.makedirs(): 필요한 모든 상위 디렉터리를 재귀적으로 함께 생성합니다.
상황에 맞게 위 세 가지 방법 중 하나를 선택하면 되며, 최신 파이썬 프로젝트에서는 가독성과 편의성이 뛰어난 pathlib 방식을 사용하는 것이 권장됩니다.