python - 在 Python 中通过数组调用时,调度时间被调度模块覆盖
问题描述
我正在尝试构建一个警报应用程序,但我正在努力让“计划”模块按我想要的方式运行。问题是,在通过数组调用 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)
没有运气......时代仍然相互覆盖,有什么想法吗?
解决方案
免责声明:0 Python经验,只有JavaScript....但是...
尽量不要像这样在对象数组中调用函数:
dayArray = [[
schedule.every().sunday,
...
取而代之的是当天的名称(唯一不同的部分)
dayArray = [[
'sunday', 'monday', ...
然后在构建函数时在 for each 中使用该字符串名称
for each .... { schedule.every()[dayArray[i]].at(...).do(...) }
我的随机猜测是,以这种方式存储时它会以某种方式被错误地调用,只需存储不同的部分(日期名称),因为您可以在循环中调用该函数的其余部分(因为它对所有人都是一样的)。
希望这是有道理的。不知道它是否会起作用,只是尝试一下。祝你好运。
推荐阅读
- facebook - 如何在 unity3d webGL 中进行正确的 facebook 支付?
- angular - 在angular8中使ngModel输入大写的正确方法是什么?
- python-3.x - 在 df 列中的 strs 上使用 str.join
- h2o - h2o.ai AutoML StackedEnsemble 给出了错误的优越验证指标
- google-analytics - GTM 解析错误。')' 预期 _ GA + Oracle Bluekai 标记
- android - Android Studio,Kotlin:BitmapFactory.decodeStream() 返回 null
- java - 如何围绕异步代码部分包装方法
- arduino - 将数据发送到云服务器时出错,arduino 滞后
- python - 比较 pandas DataFrame 中的值
- java - Jpa 从 MySQL 数据库中获取不一致的数据