mkdir()이란?mkdir()은 pathlib의 Path 객체에서 제공하는 메서드로, 폴더를 생성할 때 사용합니다.
from pathlib import Path
path = Path("myproject/output")
path.mkdir() # output 폴더 생성
os.makedirs()와 동일한 역할을 하지만, Path 객체의 메서드로 제공되기 때문에 다른 pathlib 코드와 자연스럽게 연결됩니다.
exist_ok폴더가 이미 존재할 때 어떻게 동작할지를 제어합니다.
path.mkdir() # ❌ 폴더가 이미 있으면 FileExistsError
path.mkdir(exist_ok=True) # ✅ 있어도 없어도 항상 안전
exist_ok=True를 지정하면 폴더가 이미 존재해도 에러를 내지 않고 그냥 넘어갑니다. 스크립트를 반복 실행하는 상황에서 특히 유용합니다.
parents중간 경로의 폴더가 없을 때 어떻게 동작할지를 제어합니다.
path = Path("myproject/a/b/c")
path.mkdir() # ❌ a, b가 없으면 FileNotFoundError
path.mkdir(parents=True) # ✅ myproject/a/b/c 전부 한 번에 생성
parents=True를 지정하면 중간 경로에 없는 폴더가 있어도 한 번에 전부 만들어 줍니다.
두 옵션을 함께 쓰는 것이 실전에서 가장 안전한 패턴입니다.
path.mkdir(parents=True, exist_ok=True)
parents=True — 중간 경로까지 전부 생성exist_ok=True — 이미 존재해도 에러 없이 통과처음 실행할 때도, 두 번째 실행할 때도 항상 안전하게 동작합니다.
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 객체 하나로 일관되게 처리할 수 있다는 장점이 있습니다.
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/ 폴더가 존재함을 보장할 수 있습니다.
| 옵션 | 의미 |
|---|---|
mkdir() | 폴더 생성 (중간 경로 없으면 에러, 이미 있으면 에러) |
mkdir(exist_ok=True) | 폴더가 이미 있어도 에러 없이 통과 |
mkdir(parents=True) | 중간 경로 폴더까지 한 번에 생성 |
mkdir(parents=True, exist_ok=True) | 실전에서 가장 안전한 패턴 |
한 줄 요약:
mkdir(parents=True, exist_ok=True)는 "경로가 없어도, 이미 있어도 항상 안전하게 폴더를 만들어라"는 의미입니다.