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:接收的邮箱

定时运行

参考我的关于。

参考:

经验分享 程序员 微信小程序 职场和发展