Как игнорировать определенный каталог и папку при рекурсивном поиске? Сторожевой наблюдатель

#python #python-watchdog

Вопрос:

Привет, у меня есть скрипт на python, который в основном new file creation рекурсивно отслеживает папку /var/www/html/data in и отправляет файл по электронной почте и время его создания. Я использую watchdogs observer . Проблема в app том, что в каталоге есть имя папки data , я хочу пропустить эту папку, я не хочу проверять, создается ли новый файл в app папке или нет, как мне пропустить это с помощью сторожевых псов.

Это мой код.

 class Handler(watchdog.events.RegexMatchingEventHandler):
    BLUE = '33[94m'
    GREEN = '33[92m'
    YELLOW = '33[93m'
    RED = '33[91m'
    BOLD = '33[1m'
    END = '33[0m'

    def __init__(self):
           watchdog.events.RegexMatchingEventHandler.__init__(self,
                regexes=['(?!.*?\.(?:sw|tm)p$)'], ignore_regexes=['.*\.(db-wal|db-shm)'],
                ignore_directories=False, case_sensitive=False)

    def on_created(self, event):
#        print ('New File create with Name % s in Directory' % event.src_path)
        current_date_time = str(datetime.datetime.now())
        new_file = event.src_path
        split_new_file = new_file.split("/data",1)[1]
        print("->"   " "   "New File Create with name : "   " "   split_new_file)
        mail_content = "New File Create with Name"   " "    split_new_file   " "   "at"   " "   current_date_time
        sender_address = ''
        sender_pass = ''
        receiver_address = ''
        message = MIMEMultipart()
        message['From'] = sender_address
        message['To'] = receiver_address
        message['Subject'] = 'New File Created'
        message.attach(MIMEText(mail_content, 'plain'))
        session = smtplib.SMTP('smtp.gmail.com', 587) #use gmail with port
        session.starttls() #enable security
        session.login(sender_address, sender_pass) #login with mail_id and password
        text = message.as_string()
        session.sendmail(sender_address, receiver_address, text)
        session.quit()
        print("[INFO] Email Sent to :"   " "   receiver_address)
#        call(["python3", "notify.py"])

#    def on_modified(self, event):
#        print("Watchdog received modified event - % s." % event.src_path)

if __name__ == '__main__':
    app_start_time = datetime.datetime.now()
    logger=logging.getLogger()
    logging.basicConfig(level=logging.INFO)
    src_path = r"/var/www/html/nextcloud/data"
    logger.info(
        'n'
        '-----------------------------------------------------------n'
        '    Running {0}n'
        '    PID: {1}n'
        '    Started on: {2}n'
        '-----------------------------------------------------------n'
        .format(__file__, os.getpid(), app_start_time.isoformat())
    )

    print ("**** Detecing new files in :"   src_path   " "   "****")

    event_handler = Handler()
    observer = watchdog.observers.Observer()
    observer.schedule(event_handler, path=src_path, recursive=True)
    observer.start()
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    finally:
        uptime = datetime.datetime.now()-app_start_time
        logger.info(
            'n'
            '-----------------------------------------------------------n'
            '    Stopped {0}n'
            '    Uptime: {1}n'
            '-----------------------------------------------------------n'
            .format(__file__, str(uptime))
        )