lmomfe

导航

 

一、需求背景

职场很多工作具备固定周期性:每日生成日报、每周汇总报表、每月归档文件、定时推送邮件。手动定点执行极易遗忘,本文使用schedule轻量定时库,结合前文Excel、邮件脚本,搭建全自动办公流水线,实现无人值守运行。

二、环境安装

pip install schedule

三、定时任务核心用法+实战全流程

1. 定时库基础语法

import schedule
import time

# 定义执行函数
def job():
    print("定时任务执行成功!当前时间:", time.strftime("%Y-%m-%d %H:%M:%S"))

# 每隔1分钟执行一次
schedule.every(1).minutes.do(job)
# 每天10点执行
schedule.every().day.at("10:00").do(job)
# 每周一执行
schedule.every().monday.do(job)

# 循环监听任务
while True:
    schedule.run_pending()
    time.sleep(1)

2. 企业级实战:每日自动生成报表+推送邮件

整合第二篇Excel统计、第四篇邮件发送脚本,实现完整自动化流程
import schedule
import time
from openpyxl import load_workbook, Workbook
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.header import Header

# 1. 自动生成日报表
def create_daily_report():
    wb = Workbook()
    ws = wb.active
    ws.title = "每日数据报表"
    ws.append(["统计时间", "完成数量", "异常数量", "处理进度"])
    ws.append([time.strftime("%Y-%m-%d"), 28, 2, "100%"])
    file_name = f"每日报表_{time.strftime('%Y%m%d')}.xlsx"
    wb.save(file_name)
    print(f"{file_name} 生成完成")
    return file_name

# 2. 自动发送报表邮件
def send_report_email(file_name):
    sender = "你的邮箱@qq.com"
    auth_code = "你的授权码"
    receiver = "领导邮箱@qq.com"

    msg = MIMEMultipart()
    msg["From"] = Header("自动化报表系统")
    msg["To"] = Header("部门负责人")
    msg["Subject"] = Header(f"{time.strftime('%Y年%m月%d日')}工作报表")

    text = MIMEText("今日工作报表已自动生成,详见附件。", "plain", "utf-8")
    msg.attach(text)

    # 添加附件
    with open(file_name, "rb") as f:
        attach = MIMEApplication(f.read(), _subtype="xlsx")
        attach.add_header("Content-Disposition", "attachment", filename=file_name)
        msg.attach(attach)

    # 发送邮件
    smtp = smtplib.SMTP_SSL("smtp.qq.com", 465)
    smtp.login(sender, auth_code)
    smtp.sendmail(sender, receiver, msg.as_string())
    smtp.quit()
    print("报表邮件推送成功!")

# 3. 整合定时任务
def auto_work_job():
    file = create_daily_report()
    send_report_email(file)

# 设置每天18点自动执行
schedule.every().day.at("18:00").do(auto_work_job)

# 持续运行
if __name__ == "__main__":
    print("自动化办公任务已启动,等待定时执行...")
    while True:
        schedule.run_pending()
        time.sleep(1)

四、进阶优化与部署

1、服务器/电脑后台运行,关闭窗口不中断任务;
2、添加日志记录,留存每次任务执行记录;
3、可拓展定时清理垃圾文件、定时数据备份等场景。
posted on 2026-07-20 20:32  lmomfe  阅读(2)  评论(0)    收藏  举报