본문 바로가기
Artificial Intelligence/60. Python

[PYTHON] 파일이 존재하는지 확인하는 효율적인 3가지 방법과 예외 처리 해결 가이드

by Papa Martino V 2026. 3. 13.
728x90

파일이 존재하는지 확인
파일 존재 확인

 

파이썬(Python)을 활용한 소프트웨어 개발 과정에서 파일 시스템 프레임워크를 다루는 것은 가장 기초적이면서도 중요한 작업입니다. 특히 특정 경로에 파일이 실제로 존재하는지 확인하는 프로세스는 데이터 누락을 방지하고 프로그램의 안정성을 확보하는 핵심적인 단계입니다. 단순히 존재 여부를 묻는 것을 넘어, 현대적인 파이썬 프로그래밍에서는 성능과 가독성, 그리고 객체 지향적인 접근 방식을 모두 고려해야 합니다. 본 가이드에서는 파이썬의 표준 라이브러리를 활용하여 파일 존재 여부를 확인하는 최적의 방법들을 상세히 분석하고, 실무에서 발생할 수 있는 잠재적인 오류를 해결하는 노하우를 공유합니다.

 

--- ## 1. 파일 존재 확인을 위한 주요 라이브러리 비교

파이썬은 버전에 따라 파일 시스템에 접근하는 방식이 진화해 왔습니다. 과거에는 os 모듈이 주를 이뤘으나, 현재는 보다 직관적인 pathlib 모듈이 권장됩니다. 각 방식의 특징을 아래 표로 정리하였습니다.

비교 항목 os.path 모듈 pathlib 모듈 os.access 함수
도입 버전 Python 2.x 이상 Python 3.4 이상 Python 2.x 이상
접근 방식 문자열 기반 (Procedural) 객체 기반 (Object-oriented) 권한 및 상태 체크
가독성 보통 (중첩 호출 발생) 매우 높음 (메서드 체이닝) 낮음 (플래그 사용)
권장 사용처 레거시 코드 유지보수 신규 프로젝트 및 현대적 코드 파일 읽기/쓰기 권한 확인 시

 

--- ## 2. 실전 활용 방법 (Sample Examples) ### 방법 01: 현대적인 접근, pathlib 사용하기

pathlib은 파일 시스템 경로를 단순한 문자열이 아닌 객체로 취급합니다. 이는 코드의 직관성을 높여주며 다양한 운영체제(Windows, Linux) 간의 호환성을 자동으로 해결해 줍니다.


from pathlib import Path

file_path = Path("data_sample.txt")

# 파일 존재 여부 확인 (디렉토리가 아닌 파일인지도 검사)
if file_path.is_file():
    print("파일이 존재합니다.")
else:
    print("파일을 찾을 수 없습니다.")

 

### 방법 02: 전통적인 os.path 활용하기

가장 널리 알려진 방법으로, 가벼운 스크립트나 구버전 파이썬 환경에서 주로 사용됩니다.


import os

path = "config.json"

if os.path.isfile(path):
    print(f"{path} 파일이 확인되었습니다.")
else:
    print("경로가 잘못되었거나 파일이 없습니다.")

 

### 방법 03: Try-Except 문을 통한 레이스 컨디션 해결

파일 확인과 실행 사이에 파일이 삭제되는 '레이스 컨디션(Race Condition)'을 방지하기 위해, 먼저 파일을 열어보고 에러를 처리하는 방식이 가장 안전할 때가 있습니다. 이를 EAFP(Easier to Ask for Forgiveness than Permission) 원칙이라고 합니다.


try:
    with open("database.db", "r") as f:
        data = f.read()
        print("파일을 성공적으로 읽었습니다.")
except FileNotFoundError:
    print("에러: 파일이 존재하지 않습니다.")
except PermissionError:
    print("에러: 파일 접근 권한이 없습니다.")

 

--- ## 3. 전문가의 조언: 어떤 상황에서 무엇을 써야 할까?

단순히 파일이 있는지만 확인하고 로직을 분기해야 한다면 pathlibis_file()을 사용하세요. 하지만 파일 존재 확인 직후 바로 해당 파일을 읽어야 한다면, try-except 문을 사용하는 것이 성능과 안정성 면에서 유리합니다. 이는 파일을 두 번 체크(존재 확인 후 열기)하는 비용을 줄여주기 때문입니다. 또한, 네트워크 드라이브나 공유 폴더 내의 파일을 확인할 때는 응답 속도에 따른 타임아웃 처리가 별도로 필요할 수 있음을 유의해야 합니다.

 

--- ## 4. 결론 및 요약

파이썬에서 파일을 확인하는 방법은 다양하지만, 프로젝트의 규모와 요구 사양에 맞춰 선택하는 혜안이 필요합니다. 객체 지향적인 설계를 지향한다면 pathlib을, 예외 상황에 대한 철저한 방어가 필요하다면 Exception Handling을 적극 도입하시기 바랍니다.

 

참고 문헌 및 출처:

  • Python Software Foundation - Official Documentation (pathlib, os.path)
  • Real Python - Python Pathlib Guide
  • Stack Overflow - Effective File Handling in Python
728x90