我的知识记录

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:MM 24 小时制,不能写成 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")

Python 每天定时运行脚本教程:固定时间自动执行任务

标签:

更新时间:2026-09-14 20:40:58

上一篇:Python 识别二维码内容:pyzbar 解码图片教程

下一篇:Python 自动复制文本到剪贴板:pyperclip 一键写入示例