问题描述
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]
通过循环使用调度库来调度作业。
for i,x in zip(hours,jobs):
schedule.every().monday.at(i).do(x)
schedule.every().tuesday.at(i).do(x)
schedule.every().wednesday.at(i).do(x)
schedule.every().thursday.at(i).do(x)
schedule.every().friday.at(i).do(x)
while True:
schedule.run_pending()
time.sleep(1)
我想做的是在星期五schedule.every().friday.at(i).do(x)
我安排所有的工作除了最后一个
job9 at 18:00
在这种情况下,有没有办法避免列表中的最后一项?
解决方法
您可以添加一个 if
条件来检查它是否位于列表的最后一个元素:
for i,x in zip(hours,jobs):
if i = hours[-1]:
break
schedule.every().monday.at(i).do(x)
schedule.every().tuesday.at(i).do(x)
schedule.every().wednesday.at(i).do(x)
schedule.every().thursday.at(i).do(x)
schedule.every().friday.at(i).do(x)
这会一直循环下去,直到到达最后一个元素 (hours[-1]
),并在那里跳出循环。
我相信 Ismail 的回答将避免在所有日子里安排最后一个工作。如果您只希望周五受到影响,请将 if
语句放在周五之前:
for i,jobs):
schedule.every().monday.at(i).do(x)
schedule.every().tuesday.at(i).do(x)
schedule.every().wednesday.at(i).do(x)
schedule.every().thursday.at(i).do(x)
if i != hours[-1]:
schedule.every().friday.at(i).do(x)