코드 보안까지 완벽하게 마쳤고, 프로그램 실행 버튼만 누르면 데이터가 깔끔하게 정제되어 엑셀로 저장되는 단계까지 왔습니다. 하지만 매일 아침 출근하자마자 혹은 주말 새벽에 침대에서 일어나 직접 마우스로 '실행' 버튼을 누르고 있어야 한다면 진정한 자동화라고 부르기 어렵습니다. 내가 늦잠을 자든, 여행을 떠나든 컴퓨터가 알아서 정해진 시간에 파이썬 코드를 깨워 데이터를 긁어오도록 만들어야 합니다.

운영체제(OS)에는 특정 시간에 특정 프로그램을 자동으로 실행해 주는 '배치(Batch) 시스템'이 기본적으로 내장되어 있습니다. 리눅스나 맥 OS 환경에서는 '크론탭(Crontab)'을 사용하고, 우리가 가장 흔히 쓰는 윈도우(Windows) 환경에서는 '작업 스케줄러(Task Scheduler)'라는 강력한 도구를 제공합니다. 오늘은 별도의 외부 유료 프로그램 없이, 윈도우 자체 기능을 활용해 매일 아침 지정된 시간에 내 파이썬 수집 스크립트를 완벽하게 자동 실행하는 환경을 구축해 보겠습니다.

윈도우 스케줄러 연동의 핵심: 배치(.bat) 파일 만들기

윈도우 작업 스케줄러에 파이썬 파일(.py)을 그대로 등록하면 실행이 되지 않거나 배경에서 허공에 돌다 꺼지는 경우가 많습니다. 윈도우가 파이썬을 어떤 환경에서 실행해야 하는지 경로를 정확히 인지하지 못하기 때문입니다. 그래서 우리는 파이썬 코드를 실행하라는 명령어를 담은 '배치 파일(.bat)'을 중간 다리로 먼저 만들어야 합니다.

메모장을 열고 아래 형식처럼 내 컴퓨터의 파이썬 설치 경로와 소스코드 경로를 적어줍니다.

Plaintext
@echo off
cd "C:\Users\YourName\projects\api_project"
"C:\Users\YourName\AppData\Local\Programs\Python\Python311\python.exe" script.py
pause
  • cd "경로": 내 파이썬 코드가 들어있는 폴더(작업 디렉토리)로 이동하라는 뜻입니다.

  • "파이썬 경로" script.py: 내 컴퓨터에 설치된 진짜 파이썬 실행 파일이 내 스크립트 파일을 실행하도록 직접 지정하는 명령입니다.

  • pause: 실행이 끝난 뒤 검은색 콘솔 창이 바로 닫히지 않고 멈춰 있게 만듭니다. 처음 자동화를 구축할 때 에러가 났는지 눈으로 확인하기 위한 필수 장치입니다. (안정화가 되면 제거해도 됩니다.)

메모장에서 작성 후 저장할 때 파일 형식을 '모든 파일'로 바꾸고, 파일명 끝에 run_automation.bat와 같이 .bat 확장자를 붙여서 파이썬 소스코드와 같은 폴더에 저장합니다. 이 배치 파일을 마우스로 더블 클릭했을 때 파이썬 코드가 정상 작동한다면 자동화의 절반은 성공한 것입니다.

윈도우 작업 스케줄러 설정 실전 단계

이제 윈도우 시스템이 이 배치 파일을 주기적으로 실행하도록 임무를 부여하겠습니다.

1.작업 스케줄러 실행 및 기본 작업 만들기:1분.

윈도우 시작 창에서 '작업 스케줄러'를 검색해 실행합니다. 우측 작업 창에서 **'기본 작업 만들기'**를 클릭하고, 이름에 공공데이터_자동수집과 같이 알아보기 쉬운 제목을 입력합니다.

2.트리거(시간 조건) 설정:1분.

작업을 언제 시작할지 선택하는 단계입니다. 매일 아침 최신 데이터를 누적하고 싶다면 **'매일'**을 선택한 뒤, 다음 화면에서 데이터가 확실히 갱신되어 있을 시간(예: 오전 07:00)을 지정합니다.

3.동작 및 프로그램 등록:1분.

동작 종류에서 **'프로그램 시작'**을 선택합니다. 찾아보기 버튼을 눌러 아까 만들어둔 run_automation.bat 배치 파일을 선택해 줍니다.

4.시작 위치(인수) 입력 - 가장 중요:1분.

프로그램 시작 설정 화면에 있는 '시작 위치(선택 사항)' 칸에 배치 파일이 위치한 폴더 경로(C:\Users\YourName\projects\api_project)를 반드시 입력해야 합니다. 이 칸을 비워두면 배치 파일이 엉뚱한 시스템 폴더에서 실행되어 경로 에러(FileNotFoundError)를 일으킵니다.

초보자가 가장 많이 겪는 대참사: 상대 경로와 절대 경로의 늪

스케줄러 등록을 마쳤는데 지정된 시간이 되어도 데이터 엑셀 파일이 안 생긴다며 답답해하시는 분들이 많습니다. 수집 코드를 수동으로 돌릴 때는 잘 되는데, 스케줄러만 거치면 먹통이 되는 원인의 90%는 코드 내부의 '상대 경로' 때문입니다.

만약 파이썬 코드 안에 df.to_excel("data.xlsx") 처럼 파일명만 달랑 적어두었다면, 이는 현재 파이썬이 실행되는 위치를 기준으로 파일을 저장하는 '상대 경로' 방식입니다. 윈도우 스케줄러를 통해 배경에서 코드가 실행되면, 시스템은 자기 마음대로 C:\Windows\System32 같은 엉뚱한 폴더를 기준점으로 잡고 그곳에 파일을 만들려고 시도하거나 권한 부족으로 에러를 뿜어냅니다.

이 문제를 원천 차단하려면 자동화 코드 안의 모든 파일 저장 및 불러오기 경로를 C:\Users\YourName\projects\api_project\data.xlsx 처럼 컴퓨터의 전체 주소를 다 적어주는 '절대 경로'로 수정해야 합니다. 파이썬의 os 라이브러리를 활용해 다음과 같이 코드를 짜두면 어떤 환경에서 스케줄러가 코드를 깨워도 내 폴더 자리에 정확하게 파일이 누적됩니다.

Python
import os
import pandas as pd

# 현재 파이썬 파일이 위치한 진짜 폴더 경로를 자동으로 알아냅니다.
base_dir = os.path.dirname(os.path.abspath(__file__))

# 저장할 파일의 절대 경로를 안전하게 결합합니다.
# 결과: C:\...\api_project\collected_data.xlsx
save_path = os.path.join(base_dir, "collected_data.xlsx")

# 데이터프레임 저장 시 절대 경로 변수 사용
# df.to_excel(save_path, index=False)
print(f"데이터가 다음 경로에 안전하게 자동 저장됩니다: {save_path}")

핵심 요약

  • 윈도우 환경에서 파이썬 수집 프로그램을 자동화하려면 먼저 파이썬 실행 경로를 명시한 배치 파일(.bat)을 생성해야 합니다.

  • 윈도우 작업 스케줄러 등록 시 '시작 위치' 옵션에 프로젝트 폴더 주소를 반드시 입력해 주어야 경로 이탈로 인한 실행 오류를 막을 수 있습니다.

  • 백그라운드 자동 실행 환경에서는 파일 소실을 방지하기 위해 소스코드 내 파일 저장 경로를 반드시 절대 경로(os.path.abspath) 형식으로 가공해야 합니다.