Python 每天定时运行脚本教程:固定时间自动执行任务
Python 用 schedule 库实现每天定点运行脚本,支持早上9点跑日报、晚上12点清数据,给出完整可运行代码和常见坑,配合后台运行让任务无人值守。
场景痛点
每天早上要手动跑一次数据抓取、中午要同步一次库存、下班前要生成一份报表,靠人记时间既容易漏,又打断工作节奏。把这些每天固定要做的事交给 Python 自动到点执行,人到公司打开电脑就能看到结果,效率立刻上去。
用到的库
pip install schedule
完整代码
import schedule
import time
from datetime import datetime
def daily_report():
"""每天早上生成业务日报"""
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"[{now}] 开始生成今日业务日报...")
# 这里替换为真实业务逻辑
# 1. 从数据库查询昨日数据
# 2. 生成 Excel 报表
# 3. 发送到企业微信/邮件
print("日报已生成并推送完毕。")
def midnight_clean():
"""每天凌晨清理临时文件"""
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"[{now}] 开始清理临时文件...")
# os.remove 等清理逻辑
print("临时文件清理完成。")
def main():
# 每天早上 09:00 跑日报
schedule.every().day.at("09:00").do(daily_report)
# 每天凌晨 00:30 清理
schedule.every().day.at("00:30").do(midnight_clean)
# 立即跑一次,方便验证逻辑
daily_report()
print("每日定时任务已启动...")
while True:
schedule.run_pending()
time.sleep(30)
if __name__ == "__main__":
main()
代码讲解
schedule.every().day.at("09:00")是 schedule 库中"每天固定时刻"的标准写法,时间字符串必须是HH:MM24 小时制,不能写成9:00 AM。- 多个任务用
.do()依次注册即可,schedule 会内部排队调度。 - 主循环里
time.sleep(30)表示每 30 秒检查一次,秒级延迟对每天定点任务完全够用,还能省 CPU。 - 启动时先手动调一次
daily_report(),方便立刻看到输出、验证代码有没有写错。
运行结果
运行后立即输出一次日报日志,之后每天 09:00 和 00:30 自动再跑一次。把脚本挂在服务器或自己电脑后台,就能实现无人值守的每日任务。
注意事项
- 脚本所在电脑必须开机,到点才会触发;关机状态错过的时间点不会补跑。
- schedule 不支持"错过后补跑",要补跑能力建议用 APScheduler 的 misfire_grace_time。
- 中文 Windows 下控制台可能乱码,可在脚本开头加
# -*- coding: utf-8 -*-,并把终端编码切到 UTF-8。 - 长期运行建议把日志写到文件,不要只 print:
import logging
logging.basicConfig(filename="daily.log", level=logging.INFO,
format="%(asctime)s %(message)s")

更新时间:2026-09-14 20:40:58
上一篇:Python 识别二维码内容:pyzbar 解码图片教程