ОС Windows: Python Watchdog определяет путь к файлу назначения для "удаленных" файлов

У меня есть скрипт Python, работающий в Windows с использованием модуля Python Watchdog, который предназначен для рекурсивного обнаружения изменений местоположения файла в папке с папками внутри него. Когда я перемещаю файл во внутренней папке за пределами его текущего местоположения, возникает событие FileDeleted, а не FileMoved. Я хочу быть в состоянии сказать, каково конечное местоположение файла, что я могу сделать на Mac, но НЕ на Windows. Я прочитал эту статью, которая предполагает, что проблема с Windows.

Это мой код:

class Handler(PatternMatchingEventHandler):
    @staticmethod
    if event.event_type == 'created' or event.event_type == 'modified':
          # do something if file created.
    elif event.event_type == 'deleted'
          # do something if file deleted
    elif event.event_type == 'moved':
          # do something if file moved

Как сделать так, чтобы событие перемещения файла происходило в отличие от созданного файла, и удалять события? Или есть обходной путь, который позволил бы мне рассматривать DeletedEvent как MovedEvent, получая окончательный путь к файлу?

Любая помощь будет принята с благодарностью!

0 ответов

Попробуйте определить каждое событие отдельно следующим образом:

def on_created(event):
    print(f"hey, {event.src_path} has been created!")

def on_deleted(event):
    print(f"Someone deleted {event.src_path}!")

def on_modified(event):
    print(f"{event.src_path} has been modified")

def on_moved(event):
    print(f"someone moved {event.src_path} to {event.dest_path}")

my_event_handler.on_created = on_created
my_event_handler.on_deleted = on_deleted
my_event_handler.on_modified = on_modified
my_event_handler.on_moved = on_moved

В любом случае, я думаю, что в этой ссылке вы найдете нужную информацию: https://www.thepythoncorner.com/2019/01/how-to-create-a-watchdog-in-python-to-look-for-filesystem-changes/

Другие вопросы по тегам