我试图建立一个报警应用程序,但我很难让'时间表'模块的功能,我想它。问题是,在通过数组调用day属性时,我似乎无法为一天安排多个报警。你知道吗
一天中通常安排多次的示例:
schedule.every().sunday.at('17:25').do(job)
schedule.every().sunday.at('17:30').do(job)
schedule.every().sunday.at('17:35').do(job)
这很好,但是我真的想用for循环加载时间,这样我就不会有一个巨大的if语句,这样我就可以动态地加载时间:
dayArray = [
schedule.every().sunday,
schedule.every().monday,
schedule.every().tuesday,
schedule.every().wednesday,
schedule.every().thursday,
schedule.every().friday,
schedule.every().saturday
]
for i in range(1, xlsxAlarmSheet.ncols):
for j in range(1, 8):
if(str(xlsxAlarmSheet.cell_value(j, i)) != '0'):
dayArray[j - 1].at(str(xlsxAlarmSheet.cell_value(j, i))[:2] + ':' + str(xlsxAlarmSheet.cell_value(j, i))[2:]).do(job)
通过XLRD模块从数组中加载日期,从xlsx文件中加载时间。唯一的问题是,当我安排一天多次的时候,警报会以某种方式相互覆盖。例如,如果我用这种方法为星期天安排3次,那么只有第三次安排的时间触发。我想这一定是因为当我将天加载到一个数组中时,它们不再是唯一的,所以我尝试了一个二维数组:
dayArray = [[
schedule.every().sunday,
schedule.every().monday,
schedule.every().tuesday,
schedule.every().wednesday,
schedule.every().thursday,
schedule.every().friday,
schedule.every().saturday
]] * (xlsxAlarmSheet.ncols - 1)
for i in range(1, xlsxAlarmSheet.ncols):
for j in range(1, 8):
if(str(xlsxAlarmSheet.cell_value(j, i)) != '0'):
dayArray[i - 1][j - 1].at(str(xlsxAlarmSheet.cell_value(j, i))[:2] + ':' + str(xlsxAlarmSheet.cell_value(j, i))[2:]).do(job)
没有运气。。。时代还在互相改写,有什么想法吗?你知道吗
In another question I posted,我最初试图用字符串替换day属性,就像Vig在这篇文章的回答中所建议的那样。这对我不起作用,所以我最终将对象存储在一个数组中,正如Prune在我最初的问题中所建议的那样。你知道吗
然而,Prune还将a link发布到了一个示例(示例7),在该示例中,整个调度时间的调用都存储在一个字符串中,然后通过
eval()
调用,这似乎是可行的。你知道吗所以这就是我最后要做的:
我认为您可能需要使用索引来存储您的值。此链接可能会有所帮助。 https://treyhunner.com/2016/04/how-to-loop-with-indexes-in-python/#What_if_we_need_indexes?你知道吗
免责声明:0 Python体验,仅JavaScript。。。。但是。。。你知道吗
尽量不要在如下对象数组中调用函数:
取而代之的是那天的名字(唯一不同的部分)
然后在for-each中,在构建函数时使用该字符串名称
我的随机猜测是,当以这种方式存储时,它会被错误地调用,只需存储不同的部分(日名称),因为您可以在循环中调用该函数的其余部分(因为它对所有函数都是相同的)。你知道吗
希望这是有道理的。不知道它是否有效,只是一些尝试。祝你好运。你知道吗
相关问题 更多 >
编程相关推荐