python - 递归搜索时如何忽略特定目录和文件夹?看门狗观察者
问题描述
嗨,我有 python 脚本,它基本上递归地跟踪new file creation
in/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))
)
解决方案
推荐阅读
- excel - Excel 中的唯一范围不返回唯一记录,而是返回所有其他记录
- javascript - JSON 解析错误:意外的标识符“对象”
- r - 如何防止 R 按字母顺序排列 ggplot 中的数据并指定绘制数据的顺序(提供的数据 + 代码 + 图表)?
- ios - Switch 语句而不是大量的 if 语句
- c++ - “操作员+=”行为异常的定义
- jakarta-ee - 无法识别的字段...未标记为可忽略,EE8 / Jakarta EE
- sql - 在 SQL 块中获取 ora-01858
- c# - 表单不返回值 ASP.NET Core 2.2
- sql-server - 使唯一索引不唯一
- java - Java-Maven-IntelliJ:如何定义一个与项目捆绑在一起的“便携式”JDK作为SDK/JRE来编译和运行?