#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))
)