파이썬에서 파일과 디렉터리 존재 여부 확인하기: 실전 가이드
파이썬에서 파일과 디렉터리 존재 여부 확인하기: 실전 가이드
경로 존재 확인이 중요한 이유
견고한 파이썬 애플리케이션을 만들 때, 읽기, 쓰기, 삭제 같은 작업을 수행하기 전에 파일이나 디렉터리가 존재하는지 확인해야 할 때가 많습니다. 이 검사를 건너뛰면 런타임 에러와 예기치 않은 크래시로 이어질 수 있습니다. 이 가이드는 공식 파이썬 문서와 모범 사례 패턴을 바탕으로 가장 신뢰할 수 있는 방법들을 다룹니다.
os.path.exists() 사용하기
표준 라이브러리의 일부인 os.path 모듈은 경로가 기존 파일이나 디렉터리를 가리키면 True를 반환하는 간단한 exists() 함수를 제공합니다. 단순 존재 확인에 가장 자주 쓰이는 방법입니다.
import os
from os import path
print(path.exists('guru99.txt')) # 파일이 있으면 True
print(path.exists('myDirectory')) # 디렉터리가 있으면 True
일반적인 사용 사례
def check_item(path_str):
if path.exists(path_str):
print(f"{path_str}이(가) 존재합니다.")
else:
print(f"{path_str}이(가) 존재하지 않습니다.")
파일과 디렉터리 구분하기
기존 경로의 구체적 타입을 식별하려면 isfile()과 isdir() 두 보완 함수를 사용합니다. 각각 경로가 일반 파일 또는 디렉터리일 때만 True 반환.
print(path.isfile('guru99.txt')) # 일반 파일이면 True
print(path.isdir('myDirectory')) # 디렉터리면 True
pathlib 활용 – 현대적 접근법
파이썬 3.4에 도입된 pathlib 모듈은 파일시스템 경로에 객체 지향 인터페이스를 제공합니다. Path 객체는 exists(), is_file(), is_dir() 같은 메서드를 제공해 많은 개발자가 더 읽기 쉽다고 느낍니다.
from pathlib import Path
file_path = Path('guru99.txt')
print(file_path.exists()) # 파일이나 디렉터리가 존재하면 True
print(file_path.is_file()) # 일반 파일이면 True
print(file_path.is_dir()) # 디렉터리면 True
권장 모범 사례
- 모듈은 한 번만 임포트; 반복 임포트 피하기.
- 새 프로젝트엔
Path 객체 사용해 더 명확한 문법 혜택 누리기.
- 쓰기 작업 시 존재 여부 먼저 확인해 덮어쓰기 방지하거나
Path.mkdir()로 디렉터리 생성.
- 검사와 작업 사이에 경로가 변경될 수 있으므로
FileNotFoundError 예외 처리.
빠른 참조표
| 함수 | True 반환 조건 |
os.path.exists() | 파일 또는 디렉터리 존재 |
os.path.isfile() | 경로가 기존 일반 파일 |
os.path.isdir() | 경로가 기존 디렉터리 |
pathlib.Path.exists() | 파일 또는 디렉터리 존재 (파이썬 3.4+) |
pathlib.Path.is_file() | 경로가 기존 일반 파일 |
pathlib.Path.is_dir() | 경로가 기존 디렉터리 |
자세한 문서는 공식 os.path와 pathlib 모듈 참조.