"파일을 찾을 수 없습니다" - 경로 오류(Path error)가 발생하는 이유와 대처법
파이썬으로 엑셀 자동화 코드를 잘 짜놓고 기분 좋게 실행했는데, 화면 가득 빨간색 글씨로 FileNotFoundError가 뜨면 누구나 당황하기 마련입니다. 분명히 내 눈앞 폴더에 파일이 있는데 파이썬은 "파일을 찾을 수 없다"고 우기니 답답할 노릇이죠. 어제까지 잘 되던 코드가 오늘 폴더 이름 하나 바꿨다고 멈춰버리는 일도 허다합니다.
우리가 윈도우 탐색기에서 마우스로 폴더를 클릭해 들어가는 방식은 직관적이지만, 파이썬에게 위치를 알려줄 때는 조금 더 정교한 규칙이 필요합니다. 오늘은 초보자들이 가장 많이 헤매는 '경로(Path)'의 원리를 이해하고, 매일 바뀌는 업무 환경에서도 에러 없이 파일을 척척 찾아내는 스마트한 경로 설정법을 알아보겠습니다.
1. 파이썬이 파일을 찾는 기준: 절대 경로 vs 상대 경로
파이썬이 파일을 찾는 방식은 크게 두 가지입니다.
첫째는 '절대 경로'입니다. 주소창 전체를 복사하는 방식이죠. 예컨대 C:\Users\Desktop\보고서.xlsx 처럼 집 주소를 처음부터 끝까지 다 알려주는 것입니다. 가장 확실하지만, 만약 코드를 다른 사람에게 보내거나 폴더 위치를 살짝만 옮겨도 주소가 통째로 틀려져 에러가 발생한다는 단점이 있습니다.
둘째는 '상대 경로'입니다. "지금 내가 있는 곳에서 바로 옆에 있는 파일을 찾아라"라고 명령하는 방식입니다. 파일 주소 대신 ./보고서.xlsx 처럼 마침표(.)를 사용합니다. 마침표 하나는 '현재 폴더'를 의미합니다. 코드가 들어있는 폴더와 엑셀 파일이 같은 곳에 있다면, 폴더 통째로 위치를 옮겨도 에러 없이 작동하기 때문에 실무에서는 상대 경로를 사용하는 것이 훨씬 유지보수에 유리합니다.
2. 내가 지금 어디에 있지? os.getcwd() 확인하기
상대 경로를 썼는데도 에러가 난다면, 파이썬이 생각하는 '현재 위치'와 내가 생각하는 위치가 다르기 때문입니다. 파이썬은 내가 코드를 실행하는 순간의 위치를 기준으로 파일을 찾습니다.
이때 주피터 노트북에서 import os를 입력한 뒤 os.getcwd() (Get Current Working Directory) 명령어를 실행해 보세요. 파이썬이 현재 어디를 바라보고 있는지 주소가 나옵니다. 만약 그 주소에 내가 찾는 엑셀 파일이 없다면 파이썬은 당연히 파일을 못 찾는다고 화를 냅니다. 에러가 날 때는 무조건 이 명령어로 파이썬의 현재 위치부터 확인하는 습관을 들이는 것이 좋습니다.
3. 매일 바뀌는 날짜 폴더 대응하기 (f-string 활용)
실무에서는 매일 날짜별로 폴더를 만들어 파일을 관리하는 경우가 많습니다. (예: 2023-10-01_실적, 2023-10-02_실적 등) 매번 코드의 파일명을 수동으로 고치는 것은 자동화라고 할 수 없죠.
이럴 때 8편에서 배운 날짜 기능과 파이썬의 f-string 문법을 결합하면 아주 우아하게 해결됩니다.
folder_name = f"{today}_실적" 처럼 변수를 주소 안에 쏙 집어넣는 방식입니다. 이렇게 짜두면 파이썬이 실행될 때마다 오늘 날짜를 확인해서 해당 폴더의 파일을 알아서 찾아갑니다. 한 번만 설정해 두면 1년 내내 코드를 수정할 필요가 없는 진정한 자동화의 시작입니다.
컴퓨터의 눈으로 경로를 바라보세요
경로 에러는 실력이 부족해서가 아니라, 컴퓨터와 대화하는 '주소 체계'를 잠시 잊었을 때 발생합니다. os.getcwd()로 현재 위치를 파악하고, 상황에 맞는 절대/상대 경로를 선택하는 법만 익혀두셔도 FileNotFoundError의 공포에서 90% 이상 벗어날 수 있습니다. 내 코드가 어디서 실행되든 파일을 척척 찾아낼 수 있도록 튼튼한 경로 설정을 시작해 보시기 바랍니다.
▶ 핵심 요약
FileNotFoundError는 파이썬이 바라보는 위치와 실제 파일이 있는 위치가 다를 때 발생하며,os.getcwd()로 현재 작업 경로를 확인하는 것이 에러 해결의 첫걸음이다.'절대 경로'는 고정된 전체 주소를 사용하고, '상대 경로'는 마침표(
.)를 사용해 현재 폴더 기준의 주소를 사용하며 실무에서는 유지보수가 쉬운 상대 경로를 선호한다.매일 바뀌는 폴더명이나 파일명은 f-string 문법을 활용해 변수로 처리하면, 코드 수정 없이도 날짜별 데이터를 자동으로 불러올 수 있다.
여러분은 파이썬 코드를 짤 때 파일을 불러오지 못해 한참을 헤매다 보니, 결국 파일 이름에 오타가 있었거나 폴더 위치가 틀렸던 허무한 경험이 있으신가요? 댓글로 재미있는 실수담을 편하게 공유해 주세요!
댓글
댓글 쓰기