Как на Python написать скрипт для мониторинга появления новых файлов в папке temp_files (библиотека watchdog)?

Библиотека watchdog позволяет отслеживать изменения файловой системы в реальном времени. Для мониторинга появления новых файлов в папке temp_files нужно выполнить несколько шагов.

**1. Установка библиотеки**

Установите watchdog через pip:

pip install watchdog

**2. Написание скрипта**

Создайте файл monitor.py со следующим содержимым:

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

# Настройка логирования
logging.basicConfig(
level=logging.INFO,
format=’%(asctime)s — %(message)s’,
datefmt=’%Y-%m-%d %H:%M:%S’
)

class NewFileHandler(FileSystemEventHandler):
«»»Обработчик событий файловой системы.»»»

def on_created(self, event):
«»»Срабатывает при создании нового файла или папки.»»»
if not event.is_directory:
logging.info(f’Новый файл обнаружен: {event.src_path}’)

def start_monitoring(path=’./temp_files’):
«»»Запускает наблюдение за указанной папкой.»»»
event_handler = NewFileHandler()
observer = Observer()
observer.schedule(event_handler, path=path, recursive=False)
observer.start()
logging.info(f’Мониторинг запущен для папки: {path}’)

try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
logging.info(‘Мониторинг остановлен.’)
observer.join()

if __name__ == ‘__main__’:
start_monitoring(‘./temp_files’)

**3. Ключевые компоненты**

— **FileSystemEventHandler** — базовый класс для обработки событий. Метод `on_created` вызывается при создании нового объекта.
— **Observer** — поток, который следит за файловой системой и передаёт события обработчику.
— **recursive=False** — мониторинг только верхнего уровня папки. Установите `True`, чтобы отслеживать вложенные папки.
— Проверка `event.is_directory` исключает реакцию на создание подпапок — только файлы.

**4. Запуск скрипта**

Убедитесь, что папка `temp_files` существует, затем запустите:

python monitor.py

Скрипт будет работать до нажатия Ctrl+C.

**5. Расширение функциональности**

Вы можете дополнительно фильтровать файлы по расширению:
python
def on_created(self, event):
if not event.is_directory and event.src_path.endswith(‘.csv’):
logging.info(f’Новый CSV-файл: {event.src_path}’)

Также можно добавить запись событий в лог-файл или отправку уведомлений при обнаружении нового файла.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.