👉 项目官网:https://www.python-office.com/ 👈

github star

大家好,这里是程序员晚枫,正在all in AI编程实战

今天教你怎么让程序定时自动运行——设置一次,每天自动执行,不用手动操作。

1、Windows任务计划程序

Windows 自带了定时任务功能,可以定时运行 Python 脚本。

第一步:创建Python脚本

把你要定时执行的功能写成一个脚本,比如 daily_report.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# -*- coding: utf-8 -*-
import office
from datetime import date

# 生成日报
today = date.today().strftime('%Y-%m-%d')
df = office.excel.read(path=f'销售数据_{today}.xlsx')
office.excel.write(path=f'日报_{today}.xlsx', data=df)

# 发送邮件
office.email.send(
email='领导@example.com',
title=f'【日报】{today}',
content='今日日报已生成,请查收。',
attachment=f'日报_{today}.xlsx'
)

print('日报任务完成!')

第二步:设置定时任务

  1. Win + R,输入 taskschd.msc,回车
  2. 点击右侧「创建基本任务」
  3. 填写任务名称 → 「每天」→ 选择时间(早上9点)→ 「启动程序」
  4. 程序选择 python.exe,参数填脚本路径

完成!每天早上9点自动运行。

2、Python内置定时器

不需要系统工具,Python自己就能定时:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import office
import time

def daily_task():
"""每日任务"""
print('开始执行每日任务...')

# 你的任务代码
# office.excel.merge(...)

print('任务完成!')

# 每隔24小时执行一次
while True:
daily_task()
time.sleep(24 * 60 * 60) # 24小时 = 86400秒

3、定时执行特定次数

1
2
3
4
5
6
7
8
import office
import time

# 执行10次,每次间隔1小时
for i in range(10):
print(f'第 {i+1} 次执行...')
# 任务代码
time.sleep(60 * 60) # 1小时

4、实战案例:每小时自动备份数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import office
import time
import shutil
from datetime import datetime

def backup_data():
"""每小时备份一次数据"""
now = datetime.now().strftime('%Y%m%d_%H%M%S')

# 复制数据文件到备份文件夹
shutil.copy(
'重要数据.xlsx',
f'备份/{now}_数据.xlsx'
)

print(f'备份完成: {now}')

# 每小时执行一次
while True:
backup_data()
time.sleep(60 * 60)

5、实战案例:每周一自动汇总周报

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import office
from datetime import datetime
import schedule
import time

def weekly_summary():
"""每周汇总"""
now = datetime.now()

# 只有周一才执行
if now.weekday() != 0:
return

print('开始生成周报...')

# 合并上周数据
office.excel.merge(
folder_path='上周数据',
output_file=f'周报_{now.strftime("%Y-W%W")}.xlsx',
add_file_name=True
)

# 发送邮件
office.email.send(
email='领导@example.com',
title=f'周报 {now.strftime("%Y-W%W")}',
content='本周周报已生成,请查收。'
)

print('周报已发送!')

# 每天早上8点检查
schedule.every().day.at('08:00').do(weekly_summary)

while True:
schedule.run_pending()
time.sleep(60) # 每分钟检查一次

6、常见问题

Q:电脑关机了,定时任务会执行吗?

A:不会。可以设置「如果错过任务,立即执行」。建议电脑保持开机。

Q:任务执行失败怎么办?

A:加错误处理和日志:

1
2
3
4
5
try:
# 任务代码
except Exception as e:
with open('error.log', 'a') as f:
f.write(f'{datetime.now()} - {e}\n')

Q:Mac上用什么定时?

A:Mac 用「启动项」或 launchd,也可以用 cron

7、下讲预告

学会了自动化调度,下一讲我们学 综合实战2:做一个自动化数据报表系统。

敬请期待!


有问题欢迎加微信 python-office 进群交流~

程序员晚枫专注AI编程培训,小白看完他和图灵社区合作的教程《30讲 · AI编程训练营》就能上手做AI项目。

🎓 AI 编程实战课程

想系统学习 AI 编程?程序员晚枫的 AI 编程实战课 帮你从零上手!