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

定时运行

参考我的关于Win10定时任务的博客

参考:

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值