Python检查文件内容是否有变动
作用:
-
检查发放任务的文件夹的文件是否有变动 有变动的话发邮件通知
脚本调用
file_listen(path) ,传入想要检查是否变动的路径:
import os import smtplib from email.mime.text import MIMEText from email.header import Header files = [] value = { "title": "有新任务啦", "body": "text", "sender": "xxxxx@xxx.com", "password": "******", "receiver": "xxxxxx@xxxx.com", "smtpserver": "smtp.163.com", "is_send_email": True } def file_listen(path): path = path + "/" first_dir_list = os.listdir(path) print("the path( "+ path,"):",first_dir_list) print("exist file:", files) new_file = [str(path + file) for file in first_dir_list if os.path.isfile(path + file)] print("new file:",new_file) files.extend(new_file) dirs = [str(path + file) for file in first_dir_list if os.path.isdir(path + file)] print("new dirs:",dirs) if dirs: for dir in dirs: file_listen(dir) def send_email(title, body, sender, password, receiver,smtpserver = smtp.163.com,**kwargs): :param title: 邮件标题 :param body: 邮件正文 :param sender: 发送的邮箱 :param password: 发送的邮箱的密码 :param receiver: 接收的邮箱 :param smtpserver: 使用的服务类型 :param is_send_email: 是否调用该方法 :return: if kwargs[is_send_email]: subject = Header(title, utf-8).encode() # 构造邮件对象MIMEMultipart对象 # 下面的主题,发件人,收件人,日期是显示在邮件页面上的。 msg = MIMEText(body, plain, utf-8) msg[Subject] = subject msg[From] = sender print(msg[From]) msg[To] = receiver print( msg[To]) # 发送邮件 smtp = smtplib.SMTP() smtp.connect(smtpserver) # 我们用set_debuglevel(1)就可以打印出和SMTP服务器交互的所有信息。 # smtp.set_debuglevel(1) result = smtp.login(sender, password) print("result:",result) smtp.sendmail(sender, receiver, msg.as_string()) smtp.quit() file_listen("\\Server\自由区\WSY\需要做模的文件") print(files) text = "" if os.path.exists("temp.txt"): with open("temp.txt", "r", encoding="utf8") as f: text = f.read() print("Is no changed?:",text == str(files)) if text == str(files): print("Is no changed") else: with open("temp.txt", "w", encoding="utf8") as f: f.write(str(files)) send_email(**value)
发送邮件
参考我的关于,修改 value 中的 sender,password,receiver
-
sender:发送的邮箱 password:发送的邮箱的密码 receiver:接收的邮箱
定时运行
参考我的关于。
参考:
下一篇:
Date 获取当前时间和指定时间