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

使用Python编写一个CMD脚本来监控文件夹的变化

发布时间:2023-12-14 22:50:42

要编写一个Python脚本来监控文件夹的变化,你可以使用watchdog库。watchdog是一个专门用于监控文件系统事件的库,可以在文件被创建、修改、删除等事件发生时做出相应的操作。

首先,你需要在本地安装watchdog库。你可以使用以下命令来安装它:

pip install watchdog

然后,你可以按照以下步骤来编写一个简单的脚本来监控文件夹的变化:

Step 1: 导入必要的模块和类

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

Step 2: 创建一个FileSystemEventHandler子类,用于处理不同的文件系统事件,如文件被新增、修改或删除等事件。

class MyHandler(FileSystemEventHandler):
    def on_modified(self, event):
        # 当有文件被修改时执行的代码
        print(f'文件被修改: {event.src_path}')

    def on_created(self, event):
        # 当有文件被创建时执行的代码
        print(f'文件被创建: {event.src_path}')

    def on_deleted(self, event):
        # 当有文件被删除时执行的代码
        print(f'文件被删除: {event.src_path}')

Step 3: 创建一个Observer对象,并将它绑定到指定的文件夹。

if __name__ == "__main__":
    path = '要监控的文件夹路径'
    event_handler = MyHandler()
    observer = Observer()
    observer.schedule(event_handler, path, recursive=True)
    observer.start()

在这个例子中,我们将监视path参数指定的文件夹,并在文件被创建、修改或删除时执行相应的代码。

Step 4: 用一个无限循环来让脚本持续运行,以便能够不断监听文件夹的变化。

    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

在这个例子中,我们使用了一个无限循环来防止脚本退出,并通过time.sleep(1)来控制循环的频率。

你还可以根据自己的需求,在MyHandler类的各个方法中添加相应的代码,例如将文件变化的信息写入日志文件或发送邮件通知。

下面是一个完整的例子:

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

class MyHandler(FileSystemEventHandler):
    def on_modified(self, event):
        print(f'文件被修改: {event.src_path}')

    def on_created(self, event):
        print(f'文件被创建: {event.src_path}')

    def on_deleted(self, event):
        print(f'文件被删除: {event.src_path}')

if __name__ == "__main__":
    path = '要监控的文件夹路径'
    event_handler = MyHandler()
    observer = Observer()
    observer.schedule(event_handler, path, recursive=True)
    observer.start()

    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

'要监控的文件夹路径'替换为你要监控的实际文件夹路径,并保存为一个.py文件。然后在命令行中运行该文件,即可开始监控文件夹的变化。

希望这个例子能帮助到你!