Python-每天检查对应文件是否接收,未接收则邮件报警
用python写脚本,结合windows的定时任务工具,每天下午五点检查对应文件、目录是否接收,如果未接收生成,就邮件报警;
用datetime函数,生成特定规则拼接日期的目录名;
代码及注释如下:
#!/usr/bin/python # -*- coding: utf-8 -*- import os import datetime import smtplib from email.mime.text import MIMEText # 发邮件 def mailsend (mailtext,mailsubject): mailserver = "smtp.qq.com" username_send = 'hydd@qq.com' password = 'radkoeapkvscbggc' username_recv = '407387377@qq.com' mail = MIMEText(mailtext) mail['Subject'] = mailsubject mail['From'] = username_send mail['To'] = username_recv smtp = smtplib.SMTP_SSL(mailserver) smtp.login(username_send,password) smtp.sendmail(username_send,username_recv,mail.as_string()) smtp.quit() print ('success')
# 根据日期生成对应格式的目录名 def getFilepath(ogPath,n): d = str((datetime.datetime.now() - datetime.timedelta(days=0)).date()).split("-") if n == 0:
# 格式为 YYYYMMDD ogPath = d[0]+d[1]+d[2] elif n == 1 or n == 2:
# 格式为 YYYY-MM-DD,月和日中前面有0的去除,例:2020-11-9 ogPath = d[0] + '-' + d[1].lstrip('0')+ '-' +d[2].lstrip('0') return(ogPath)
# 判断对应目录是否生成,如果对应目录不存在,就发邮件 def filePathExistess(filepath): if os.path.exists(filepath): pass else: mailtext = filepath + ':对帐文件目录不存在,请检查!!' mailsubject = '【警告】对帐文件目录不存在' mailsend(mailtext,mailsubject) # 判断对应文件是否接收,如果没有接收,pos为0 def fileExistss(filepath,filename): pos = 0 if os.path.exists(filepath): for i in os.listdir(filepath): if filename in i and "hk" not in i and "HK" not in i: pos = 1 return(pos) # 监控基本目录List ogPathList = ['C:\\Program Files (x86)\\SSCC\\MFET0001\\recv','C:\\Program Files (x86)\\SSCC\\北京结算通信网关\\File','C:\\Program Files (x86)\\SSCC\\D-COM\\File'] # 目录内对应文件List
filename = ['zqyejs381','BJSDZ','SJSDZ'] i = 0 while i < len(ogPathList): temp = getFilepath(ogPathList[i],i) filepath = ogPathList[i] + '\\' +temp filePathExistess(filepath) mailFlag = fileExistss(filepath,filename[i])
# 如果fileExistss函数传回来是0(对账文件未接收,就邮件报警) if mailFlag == 0: mailtext = filepath + '对帐文件未接收,请检查!!' mailsubject = '【警告】对帐文件未接收' mailsend(mailtext,mailsubject) i = i + 1