问题描述
嗨,我有 python 脚本,它基本上递归地跟踪 new file creation
文件夹中的 /var/www/html/data
,并通过电子邮件发送文件及其创建时间。我正在使用 watchdogs observer
。问题是在 app
目录中有文件夹名称 data
我想跳过那个文件夹我不想检查是否在 app
文件夹中创建了新文件我如何使用看门狗跳过那个.
这是我的代码。
class Handler(watchdog.events.RegexMatchingEventHandler):
BLUE = '\033[94m'
GREEN = '\033[92m'
YELLOW = '\033[93m'
RED = '\033[91m'
BOLD = '\033[1m'
END = '\033[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))
)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)