Created
April 21, 2020 07:01
-
-
Save daimon99/670b2c5706935640bec13abee035e920 to your computer and use it in GitHub Desktop.
用 watchdog 监听文件变化自动构建 / Auto build monitoring file change with watchdog
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import time | |
import watchdog.events | |
import watchdog.observers | |
class Handler(watchdog.events.PatternMatchingEventHandler): | |
def __init__(self): | |
# Set the patterns for PatternMatchingEventHandler | |
watchdog.events.PatternMatchingEventHandler.__init__(self, patterns=['*.rst'], | |
ignore_directories=True, case_sensitive=False) | |
def on_created(self, event): | |
print("Watchdog received created event - % s." % event.src_path) | |
# Event is created, you can process it now | |
self.re_build_doc() | |
def on_modified(self, event): | |
print("Watchdog received modified event - % s." % event.src_path) | |
# Event is modified, you can process it now | |
self.re_build_doc() | |
def re_build_doc(self): | |
import subprocess | |
subprocess.getoutput('make html') | |
if __name__ == "__main__": | |
src_path = r"." | |
event_handler = Handler() | |
observer = watchdog.observers.Observer() | |
observer.schedule(event_handler, path=src_path, recursive=True) | |
observer.start() | |
print('Start auto build docs now ...') | |
try: | |
while True: | |
time.sleep(1) | |
except KeyboardInterrupt: | |
observer.stop() | |
observer.join() | |
print('Stop auto build docs.') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment