Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 파일 변경 사항 감지하기: watchdog 라이브러리 활용법

어떤 프로그래밍 언어든 파일 변경 사항을 모니터링하는 작업은 운영체제마다 다른 방식으로 동작하기 때문에 쉽지 않은 과제입니다. 다행히 Python에서는 watchdog이라는 널리 사용되는 크로스 플랫폼 라이브러리를 통해 이 문제를 손쉽게 해결할 수 있습니다.

watchdog 설치하기

pip를 사용하여 간단하게 설치할 수 있습니다:

$ pip install watchdog

기본 예제

다음 예제는 현재 디렉터리의 파일 변경 사항을 감시하는 간단한 프로그램입니다:

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

class MyHandler(FileSystemEventHandler):
    def on_modified(self, event):
        print("파일이 변경되었습니다!")

event_handler = MyHandler()
observer = Observer()
observer.schedule(event_handler, path='.', recursive=False)
observer.start()
try:
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    observer.stop()
observer.join()

코드 동작 원리

프로그램을 실행한 후 현재 디렉터리 내의 파일을 수정하면, MyHandler 클래스의 on_modified 메서드가 자동으로 호출됩니다. 이 클래스 안에 on_created, on_deleted, on_moved 등 다양한 이벤트 처리 함수를 직접 정의할 수도 있습니다.

주요 설정 옵션

  • path: 감시하고자 하는 파일 또는 디렉터리 경로를 지정합니다.
  • recursive: True로 설정하면 하위 디렉터리까지 재귀적으로 감시합니다.
  • Observer: 백그라운드 스레드에서 파일 시스템 이벤트를 지속적으로 관찰합니다.

프로그램을 종료하려면 키보드에서 Ctrl + C를 누르면 됩니다. KeyboardInterrupt가 발생하면 observer가 안전하게 중지됩니다.