윈도우 작업 스케줄러를 사용하여 Python 스크립트를 자동화하는 과정에서 생겼던 작은 이슈인데, 다음과 같이 해결하였다.
문제:
스크립트와 동일한 디렉토리에 위치한 외부 리소스 파일(CSV, JSON, 설정 파일 등)을 로드하지 못하고 FileNotFoundError가 발생하는 현상.
원인 분석:
이 문제는 실행 컨텍스트상의 현재 작업 디렉토리와 스크립트의 실제 물리적 경로가 일치하지 않아 발생한다.
- 기본 동작 : 윈도우 작업 스케줄러는 작업을 실행할 때, 별도의 설정이 없으면 작업 디렉토리를 스크립트 위치가 아닌 시스템 기본 경로, 즉 (C:\Windows|System32)로 초기화한다.
- 경로 참조 실패 : 이로 인해 코드 내에서 사용된 상대 경로는 스크립트가 있는 폴더가 아닌 System32 폴더를 참조하게 되며, 해당 위치에는 파일이 존재하지 않게 되는 것이다.
해결 방안:
스크립트가 실행되는 동안의 작업 디렉토리를 스크립트 파일이 위치한 경로와 일치시켜야 한다.
- 설정 방법 : 작업 스케줄러 속성 상의 동작 탭 -> 편집 메뉴 진입.
- 조치 사항 : 시작 위치 필드에 실행할 스크립트 파일이 저장된 폴더의 절대 경로를 입력.
- 결과 : 스크립트 실행 시점의 CWD가 지정된 폴더로 고정되므로, 코드 수정 없이도 상대 경로를 통한 리소스 파일 접근이 정상적으로 작동한다.
요약:
윈도우 작업 스케줄러 작업 구성시, ‘실행 파일’의 경로 뿐만 아니라 실행의 기준이 되는 ‘시작 위치’를 반드시 명시해야 한다.
ex)
[참고: 실행 경로 비교 예시]
:x: 설정 전 (오류 발생)
- 실행 위치 (CWD):
C:\\Windows\\System32 - 스크립트 요청:
read("file.csv")(상대 경로) - 실제 탐색 경로:
C:\\Windows\\System32\\file.csv - 결과:File Not Found (파일 없음)
:white_check_mark: 설정 후 (정상 작동)
- 시작 위치 설정:
E:\\Project - 실행 위치 (CWD):
E:\\Project - 스크립트 요청:
read("file.csv")(상대 경로) - 실제 탐색 경로:
E:\\Project\\file.csv - 결과:Success (파일 찾음)

