边走边聊 Python 3.8:Chapter 11:自动化脚本进阶
Chapter 11:自动化脚本进阶自动化不是偷懒,而是把时间还给更重要的事情。本章将带你掌握定时任务、邮件发送、微信推送等能力,并结合 Win7 的任务计划程序构建一个真正能每天自动运行的脚本。你会发现:当电脑替你工作,你就能替未来的自己争取更多可能。“自动化不是偷懒,而是把时间还给更重要的事。”大家好!前10篇我们已经把基础自动化玩得差不多了,这篇进入进阶篇:定时任务 + 邮件推送 + 微信推送。核心目标是——每天早上8点自动推送“今日待办 + 天气”,再也不用手动打开手机看天气和清单。我们会用最轻量的方案,全部兼容 Python 3.8 和 Win7,同时给出底层原理 + Win7 特有坑点,让你一看就懂、一步就能跑通。1. 定时任务的两种轻量实现方式(选其一即可)1. schedule 库(强烈推荐,轻量纯 Python)安装(Win7 命令提示符):pip install schedule(只需一次,3.8 完全兼容)示例代码(test_schedule.py):# -*- coding: utf-8 -*-importscheduleimporttimedefjob():print("【定时任务执行】现在是早上8点!")# 每天 08:00 执行schedule.every().day.at("08:00").do(job)whileTrue:schedule.run_pending()time.sleep(60)# 每60秒检查一次底层原理(源码级):schedule 只有两个核心类:Scheduler和Job。Job记录next_run(下次执行时间戳,用time.time()计算)。run_pending()就是个死循环:遍历所有 Job → 如果time.time() = next_run就执行 → 更新next_run。源码极简(300 行),没有线程/进程开销,适合 Win7 这种老系统。2. threading.Timer(标准库,无需安装)适合只需要“单次延时”或简单周期的场景:importthreadingdefjob():print("任务执行")# 86400秒 = 24小时timer=threading.Timer(86400,job)timer.start()机制:基于threading.Event + time.sleep,一次性的,想循环就要在 job 里再 new 一个 Timer。实战建议:日常用schedule就够了,更清晰。2. smtplib 发送邮件(标准库,无需安装)底层原理:smtplib实现了SMTP 协议(RFC 5321)。它通过 socket 连接邮件服务器(端口 25/465/587),完成 HELO/EHLO → AUTH → MAIL FROM → RCPT TO → DATA → QUIT 全流程。支持 SSL/TLS 加密。QQ 邮箱实战配置(Win7 亲测可用):登录 QQ 邮箱网页版 → 设置 → 账户 → 开启“POP3/SMTP服务” → 获取授权码(不是密码!)。服务器:smtp.qq.com,端口 465(SSL)。发送邮件代码(可直接复用):importsmtplibfromemail.mime.textimportMIMETextfromemail.headerimportHeaderdefsend_email(subject,content)