24. Python watchdog으로 파일 변경 자동 감지하기

저도 처음에는 코드를 수정하거나 파일이 바뀔 때마다 매번 터미널을 켜서 프로그램을 다시 실행하고 새로고침을 누르느라 바빴습니다. 처음엔 별거 아닌 것 같아도, 프로젝트 규모가 커질수록 하루에만 수십, 수백 번씩 이 단순 반복을 하느라 아까운 집중력과 시간을 통째로 낭비하곤 했죠. 그러다 파이썬의 watchdog 라이브러리를 알게 되었는데요. 코드를 수정하고 저장(Ctrl + S)하는 단 1초 만에, 변경 사항을 알아서 감지하고 테스트나 후처리 작업을 자동으로 실행해 주는 신세계를 경험했습니다. 특히 VS Code에서 저장만 하면 화면이 즉시 갱신되니 이제는 없어서는 안 될 필수 도구가 되었습니다. 이번 글에서는 watchdog의 기본 개념부터 설치, 실전 활용 예제까지 초보자도 쉽게 따라 할 수 있도록 차근차근 살펴보겠습니다.


Python watchdog은 python 환경에서 파일이나 폴더의 변경 사항을 실시간으로 감지할 수 있는 대표적인 라이브러리입니다. 특히 vscode에서 프로그램을 개발하다 보면 파일을 저장할 때마다 자동으로 작업을 실행하고 싶은 경우가 자주 발생합니다. 로그 자동 생성, 이미지 변환, 데이터 처리, 테스트 실행 등 다양한 자동화 작업을 손쉽게 구현할 수 있어 생산성을 크게 높여줍니다.


Python watchdog이란 무엇인가

Python watchdog은 운영체제의 파일 시스템 이벤트를 감지하여 원하는 작업을 자동으로 수행하도록 만들어 주는 라이브러리입니다.

예를 들어 다음과 같은 상황에서 매우 유용합니다.

  • 파일이 생성되면 자동 백업
  • 이미지가 저장되면 자동 리사이즈
  • CSV 파일이 변경되면 자동 분석
  • 로그 파일 생성 시 자동 알림
  • 프로젝트 파일 저장 시 테스트 자동 실행

마치 우편함 앞에서 하루 종일 기다리지 않아도 택배가 도착하면 초인종이 울리는 것과 비슷합니다. 프로그램이 계속 폴더를 확인하는 것이 아니라 운영체제가 이벤트를 알려주므로 훨씬 효율적입니다.

또 다른 비유를 하자면 자동문과 같습니다. 사람이 가까이 오기 전까지는 아무 일도 하지 않지만, 움직임이 감지되는 순간 문이 열립니다. watchdog 역시 파일 변화가 생기는 순간에만 동작합니다.



watchdog 설치하기

pip로 설치하기

가장 먼저 라이브러리를 설치합니다.

pip install watchdog

설치가 완료되었다면 정상적으로 설치되었는지 확인합니다.

pip show watchdog

버전 정보가 출력된다면 설치가 완료된 것입니다.


vscode에서 watchdog 프로젝트 만들기

Visual Studio Code에서 새로운 프로젝트를 만들어 보겠습니다.

프로젝트 구조는 다음과 같습니다.

watchdog_project/
│
├── watch.py
├── test.txt
└── logs/

VSCode 터미널에서 실행합니다.

python watch.py

프로그램이 실행된 상태에서 test.txt 파일을 수정하면 즉시 이벤트가 발생합니다.




파일 변경 감지 코드 작성하기

가장 기본적인 예제

아래 코드는 파일이 수정될 때마다 메시지를 출력합니다.

from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import time


class MyHandler(FileSystemEventHandler):

    def on_modified(self, event):
        print(f"파일 변경 감지 : {event.src_path}")


observer = Observer()

observer.schedule(
    MyHandler(),
    ".",
    recursive=True
)

observer.start()

try:
    while True:
        time.sleep(1)

except KeyboardInterrupt:
    observer.stop()

observer.join()

코드를 실행한 후 아무 파일이나 저장하면 콘솔에 다음과 같이 출력됩니다.


watchdog은 수정뿐 아니라 다양한 이벤트도 제공합니다.

  • on_created()
  • on_deleted()
  • on_modified()
  • on_moved()

필요한 이벤트만 구현하면 됩니다.


Python watchdog 활용 사례

로그 자동 생성

새로운 로그 파일이 생성되면 자동으로 서버에 업로드할 수 있습니다.

이미지 자동 변환

사진이 업로드되면 자동으로 썸네일을 생성할 수 있습니다.

데이터 분석 자동화

CSV 파일이 변경되면 자동으로 Pandas 분석을 실행할 수 있습니다.

AI 프로젝트

LLM 프로젝트에서는 프롬프트 파일이 수정되면 서버를 다시 시작하지 않고 자동으로 반영하는 기능을 만들 수 있습니다.

vscode 자동 실행

VSCode에서 저장(Ctrl + S)을 누르는 순간 자동으로 다음 작업을 실행하도록 만들 수도 있습니다.

  • 테스트 실행
  • 코드 포맷팅
  • 문서 생성
  • PDF 생성
  • 이미지 압축

이처럼 반복 작업을 자동화하면 개발자가 코딩 자체에 집중할 수 있습니다.



watchdog 사용할 때 주의할 점

너무 많은 이벤트 발생

텍스트 파일 하나를 저장해도 운영체제에서는 여러 번 이벤트가 발생하는 경우가 있습니다.

따라서 실제 프로젝트에서는 이벤트 중복을 제거하는 로직을 함께 사용하는 것이 좋습니다.

예를 들어 마지막 실행 시간을 기록하여 일정 시간 안에는 다시 실행하지 않도록 만들 수 있습니다.

recursive 옵션

recursive=True

하위 폴더까지 모두 감시합니다.

recursive=False

현재 폴더만 감시합니다.

프로젝트 규모가 커질수록 필요한 범위만 감시하는 것이 성능에 도움이 됩니다.


Python watchdog을 활용하면 좋은 프로젝트

다음과 같은 프로젝트에서는 watchdog이 특히 빛을 발합니다.

  1. 파일 업로드 자동 처리 시스템
  2. 이미지 변환 프로그램
  3. AI 문서 자동 분석
  4. PDF 자동 생성 프로그램
  5. 로그 분석 시스템
  6. 백업 프로그램
  7. 웹 서버 자동 재시작
  8. 데이터 파이프라인 구축

특히 Python 자동화 프로젝트에서는 거의 필수 라이브러리라고 해도 과언이 아닙니다.


핵심 정리

  • watchdog은 파일 변경 이벤트를 실시간으로 감지하는 Python 라이브러리입니다.
  • vscode와 함께 사용하면 저장과 동시에 자동 작업을 수행할 수 있습니다.
  • 수정, 생성, 삭제, 이동 이벤트를 모두 감지할 수 있습니다.
  • 반복적인 업무를 자동화하여 생산성을 크게 높일 수 있습니다.
  • 프로젝트 규모에 맞게 recursive 옵션과 이벤트 중복 처리 로직을 적용하는 것이 좋습니다.

마무리

Python watchdog은 단순히 파일 변경을 감지하는 도구를 넘어 자동화 개발의 출발점이 되는 라이브러리입니다. 처음에는 파일 저장 시 메시지를 출력하는 간단한 예제로 시작하더라도, 조금만 확장하면 로그 관리, 이미지 처리, 데이터 분석, AI 워크플로우 등 다양한 분야에 적용할 수 있습니다. 특히 vscode와 함께 활용하면 개발 과정의 반복 작업을 크게 줄일 수 있으며, 작은 자동화가 쌓여 개발 생산성의 큰 차이를 만들어 냅니다. 자동화를 배우고 싶은 Python 개발자라면 가장 먼저 익혀둘 만한 라이브러리입니다.


댓글

이 블로그의 인기 게시물

1.Python 설치부터 실행까지 10분 만에 끝내기 — 초보자도 바로 따라 하는 완벽 가이드

30.Python pyautogui로 마우스와 키보드 자동화하기: VSCode 실전 가이드

Python 오류 해결: pip install 오류 해결하기 완벽 가이드