欢迎访问宙启技术站
智能推送

使用watch()函数实现Python代码的自动触发与执行

发布时间:2023-12-15 00:21:23

在Python中,可以使用watchdog库中的watch函数实现代码的自动触发与执行。watchdog是一个专门用于监视文件系统变化的库,它可以检测到文件或目录的变化,例如新文件的创建、文件的修改或删除等。

下面是使用watch函数实现Python代码的自动触发与执行的示例代码:

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

# 创建一个自定义的事件处理器,触发代码执行
class CodeChangeHandler(FileSystemEventHandler):
    def on_modified(self, event):
        if event.src_path.endswith('.py'):
            print("Code changed. Executing...")
            execute_code()

# 代码执行函数
def execute_code():
    # 在这里写要执行的代码
    print("Hello, World!")

# 创建一个观察者对象,并指定要监听的目录和事件处理器
event_handler = CodeChangeHandler()
observer = Observer()
observer.schedule(event_handler, path='.', recursive=True)

# 启动观察者
observer.start()

try:
    # 在这里写主要的执行逻辑
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    # 捕获Ctrl+C,停止观察者
    observer.stop()

# 等待观察者线程停止
observer.join()

在上述代码中,首先引入了watchdog库的相关模块,然后创建了一个自定义的事件处理器CodeChangeHandler,继承自FileSystemEventHandlerCodeChangeHandler重写了on_modified方法,在文件修改事件触发时检查文件扩展名是否为.py,如果是的话,则调用execute_code函数执行代码。

然后,在execute_code函数中编写了要执行的代码,这里只是简单地输出了"Hello, World!"。

接下来,创建了观察者对象observer,并将要监听的目录和事件处理器指定为参数传入。这里使用当前目录,递归地监听所有子目录。

最后,在try块中写入主要的执行逻辑,通过调用time.sleep函数使程序暂停运行1秒钟,然后监听键盘输入,当捕获到Ctrl+C时,停止观察者对象。

运行上述代码后,可以在当前目录下对Python文件进行修改,触发代码的自动执行。每次文件修改都会输出"Code changed. Executing...",然后执行execute_code函数中的代码,输出"Hello, World!"。

可以根据实际需求修改CodeChangeHandler中的on_modified方法来处理不同的事件。同时,execute_code函数也可以放置任意其他需要执行的代码。