mkdir() 사용하기

Tasker_Jang·2026년 3월 20일

1. mkdir()이란?

mkdir()pathlibPath 객체에서 제공하는 메서드로, 폴더를 생성할 때 사용합니다.

from pathlib import Path

path = Path("myproject/output")
path.mkdir()  # output 폴더 생성

os.makedirs()와 동일한 역할을 하지만, Path 객체의 메서드로 제공되기 때문에 다른 pathlib 코드와 자연스럽게 연결됩니다.


2. 주요 옵션 — exist_ok

폴더가 이미 존재할 때 어떻게 동작할지를 제어합니다.

path.mkdir()               # ❌ 폴더가 이미 있으면 FileExistsError
path.mkdir(exist_ok=True)  # ✅ 있어도 없어도 항상 안전

exist_ok=True를 지정하면 폴더가 이미 존재해도 에러를 내지 않고 그냥 넘어갑니다. 스크립트를 반복 실행하는 상황에서 특히 유용합니다.


3. 주요 옵션 — parents

중간 경로의 폴더가 없을 때 어떻게 동작할지를 제어합니다.

path = Path("myproject/a/b/c")

path.mkdir()              # ❌ a, b가 없으면 FileNotFoundError
path.mkdir(parents=True)  # ✅ myproject/a/b/c 전부 한 번에 생성

parents=True를 지정하면 중간 경로에 없는 폴더가 있어도 한 번에 전부 만들어 줍니다.


4. 실전에서 가장 많이 쓰이는 패턴

두 옵션을 함께 쓰는 것이 실전에서 가장 안전한 패턴입니다.

path.mkdir(parents=True, exist_ok=True)
  • parents=True — 중간 경로까지 전부 생성
  • exist_ok=True — 이미 존재해도 에러 없이 통과

처음 실행할 때도, 두 번째 실행할 때도 항상 안전하게 동작합니다.


5. os.makedirs()와 비교

# os 방식
import os
os.makedirs("myproject/output", exist_ok=True)

# pathlib 방식
from pathlib import Path
Path("myproject/output").mkdir(parents=True, exist_ok=True)

결과는 동일합니다. 다만 pathlib 방식은 경로 생성, 결합, 폴더 만들기까지 모두 Path 객체 하나로 일관되게 처리할 수 있다는 장점이 있습니다.


6. import 시점에 폴더를 보장하는 패턴

config.py처럼 설정 파일에서 자주 쓰이는 패턴입니다.

from pathlib import Path

BASE_DIR   = Path(__file__).parent
OUTPUT_DIR = BASE_DIR / "output"

OUTPUT_DIR.mkdir(exist_ok=True)  # import 시점에 output/ 폴더 보장

config.py는 import 되는 순간 실행되기 때문에, 이 한 줄 덕분에 다른 스크립트가 결과를 저장하기 전에 항상 output/ 폴더가 존재함을 보장할 수 있습니다.


7. 핵심 정리

옵션의미
mkdir()폴더 생성 (중간 경로 없으면 에러, 이미 있으면 에러)
mkdir(exist_ok=True)폴더가 이미 있어도 에러 없이 통과
mkdir(parents=True)중간 경로 폴더까지 한 번에 생성
mkdir(parents=True, exist_ok=True)실전에서 가장 안전한 패턴

한 줄 요약: mkdir(parents=True, exist_ok=True)는 "경로가 없어도, 이미 있어도 항상 안전하게 폴더를 만들어라"는 의미입니다.

profile
ML Engineer 🧠 | AI 모델 개발과 최적화 경험을 기록하며 성장하는 개발자 🚀 The light that burns twice as bright burns half as long ✨

0개의 댓글