You need to enable JavaScript to run this app. Python schedule库调度时如何在周五配置中跳过列表最后一项
优惠活动
大模型
产品
解决方案
定价
更多

Python schedule库调度时如何在周五配置中跳过列表最后一项

实现方案

完全不需要修改原有任务列表的存储结构,通过拆分调度逻辑、结合列表切片或循环判断的方式即可实现需求,两种可直接落地的写法如下:

写法1:拆分工作日的调度规则(推荐)

这种写法把周一到周四的全量调度、周五的特殊调度做逻辑隔离,减少重复代码的同时,后续调整规则也更方便:

import schedule
import time

# 原有列表保持不变
hours = ["00:00","06:00","08:30","09:30","10:30","12:30","14:30","16:00","18:00"]
jobs  = [job1,job2,job3,job4,job5,job6,job7,job8,job9]

# 周一到周四:全量配置所有任务
normal_days = [
    schedule.every().monday,
    schedule.every().tuesday,
    schedule.every().wednesday,
    schedule.every().thursday
]
for time_str, job in zip(hours, jobs):
    for day_config in normal_days:
        day_config.at(time_str).do(job)

# 周五:仅配置除最后一项外的所有任务
friday_config = schedule.every().friday
# 列表切片[:-1]代表取除最后一个元素外的所有内容
for time_str, job in zip(hours[:-1], jobs[:-1]):
    friday_config.at(time_str).do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

写法2:在原有循环中加判断逻辑

如果不想改动原有循环的整体结构,可以通过enumerate拿到当前遍历的索引,仅在非最后一项时配置周五的规则:

for idx, (time_str, job) in enumerate(zip(hours, jobs)):
    schedule.every().monday.at(time_str).do(job)
    schedule.every().tuesday.at(time_str).do(job)
    schedule.every().wednesday.at(time_str).do(job)
    schedule.every().thursday.at(time_str).do(job)
    # 仅当不是最后一个任务时,才给周五添加对应调度规则
    if idx < len(hours) - 1:
        schedule.every().friday.at(time_str).do(job)

注意事项

  • 不要硬编码判断时间值(比如判断time_str != "18:00"),使用索引切片/判断的方式更灵活:后续不管列表新增多少任务,只要需要周五跳过的项始终放在列表最后位置,逻辑不需要修改
  • 建议提前校验hours和jobs的长度一致性,避免zip循环时漏配任务

内容的提问来源于stack exchange,提问作者Andres Gonzalez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.30 21:36:08