728x90
FileNotFoundError: mismatched relative vs absolute path
오류는 파일 경로를 지정할 때 상대 경로와 절대 경로를 혼동하거나 잘못된 기준으로 경로를 지정하여 파일을 찾지 못할 때 발생합니다. 실제로 존재하는 파일이더라도 경로 기준이 잘못되면 파이썬은 파일을 찾을 수 없습니다.
예를 들어 현재 작업 디렉토리가 /project/src
인데, open("../data/file.txt")
처럼 상대 경로를 잘못 지정하면 파일이 존재하지 않는 것으로 인식됩니다.
● 오류 발생 예시
# 현재 디렉토리: /project/src
open("data/file.txt") # 실제 파일 위치는 /project/data/file.txt
작업 디렉토리가 아닌 위치를 기준으로 경로를 지정하면 FileNotFoundError
가 발생합니다.
● 해결 방법
os.getcwd()
또는Path.cwd()
로 현재 작업 디렉토리 확인- 상대 경로 대신 절대 경로를 사용
- 스크립트 기준 경로:
__file__
과Path(__file__).resolve().parent
활용
● 예시 코드 (절대 경로 활용)
from pathlib import Path
base_path = Path(__file__).resolve().parent.parent
file_path = base_path / "data" / "file.txt"
with open(file_path, "r") as f:
data = f.read()
● 자주 하는 실수
- IDE와 터미널에서 실행 디렉토리가 다른 경우
- 상대 경로 기준이 다른 여러 모듈을 혼합 사용
- Jupyter Notebook에서 작업 경로가 셀 기준임을 간과
● 결론
FileNotFoundError - mismatched relative vs absolute path
오류는 올바른 경로를 지정하지 않아 발생합니다. 경로 기준을 명확히 인식하고, 프로젝트 구조에 따라 적절한 방식(절대/상대)을 선택하는 것이 중요합니다.
728x90