通过python写一个程序,监控指定文件夹内文件的增,删,改情况,需要提供删除者,所删除的文件,程序名
时间: 2023-05-24 20:04:39 浏览: 259
使用watchdog库,可以轻松实现监控指定文件夹内文件的增删改情况。以下是一个简单的示例代码:
```python
import os
import time
import logging
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
# 设置日志级别
logging.basicConfig(level=logging.INFO)
class FileChangeHandler(FileSystemEventHandler):
def on_created(self, event):
# 处理文件创建事件
logging.info(f"文件 {event.src_path} 被创建了!")
def on_deleted(self, event):
# 处理文件删除事件
logging.info(f"文件 {event.src_path} 被删除了!删除者: {os.getlogin()},操作程序: {event.__class__.__name__}")
def on_modified(self, event):
# 处理文件修改事件
logging.info(f"文件 {event.src_path} 被修改了!")
if __name__ == "__main__":
# 监控的文件夹路径
folder_path = "C:/temp"
# 创建监控器对象和事件处理对象
observer = Observer()
event_handler = FileChangeHandler()
# 递归地监控指定文件夹内所有文件的变化
observer.schedule(event_handler, folder_path, recursive=True)
# 启动监控器
observer.start()
logging.info(f"开始监控文件夹 {folder_path} ...")
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
# 用户按下 Ctrl-C 终止程序
observer.stop()
logging.info("程序被终止!")
observer.join()
```
这段代码中,我们定义了一个 `FileChangeHandler` 类,继承自 `FileSystemEventHandler`。`on_created` 方法处理文件创建事件,`on_deleted` 方法处理文件删除事件,`on_modified` 方法处理文件修改事件。这些方法在事件被触发时,将相应的信息输出到控制台和日志文件中。
在 `if __name__ == "__main__":` 块中,我们设置了监控的文件夹路径,并创建了监控器对象和事件处理对象。通过 `observer.schedule` 方法将事件处理对象注册到监控器中,然后调用 `observer.start` 方法开始监控。最后,在一个无限循环中等待用户终止程序,收到 KeyboardInterrupt 信号后,调用 `observer.stop` 停止监控器,并调用 `observer.join` 等待监控器线程结束。
阅读全文