在python中访问APScheduler cron触发器字段值

与此问题类似,我想从 APScheduler 中提取 cron 作业触发器的信息。但是,我需要“day_of_week”字段而不是所有内容。使用


for job in scheduler.get_jobs():

  for f in job.trigger.fields:

    print(f.name + " " + str(f))

我可以看到所有字段,例如week,hour,day_of_week,但是


job.trigger.day_of_week似乎是“CronTrigger”对象的“不是属性”。我很困惑这job.trigger是什么类型的对象以及它的字段是如何打包的。我试着阅读了github上的代码,但更令人费解。


如何只提取一个字段day_of_week,这个触发器类的结构如何?


潜得更深我发现


apscheduler.triggers.cron.fields.DayOfWeekField

我可以通过索引 找到job.trigger.fields[4],这看起来非常糟糕,因为它取决于字段的“位置”。我得到的是这个 DayOfWeekField,可笑的是,我也无法从中检索它的价值:


a.get_value

<bound method DayOfWeekField.get_value of DayOfWeekField('day_of_week', '1,2,3,4')>

字段的结构在此处编码,但我不知道如何处理 .dateval 的参数get_value()。


最终,在希望理解这个概念之后,我想做


if job-day_of_week contains mon


if job-day_of_week == '*'


print ( job-day_of_week )

我很感激任何建议/提示!


呼啦一阵风
浏览 259回答 1
1回答

四季花海

查看代码,您应该能够day_of_week通过使用CronTrigger类的FIELD_NAMES属性来获取字段,而无需对索引进行硬编码,例如dow_index = CronTrigger.FIELD_NAMES.index('day_of_week')dow = job.trigger.fields[dow_index]获取字段的值有点复杂,但它似乎BaseField实现了str函数,该函数应该为您提供创建字段的表达式的值作为字符串,您可以解析以找到所需的内容:dow_value_as_string = str(dow)if 'mon' in dow_value_as_string:&nbsp; &nbsp;# do somethingif dow_value_as_string = "*":&nbsp; &nbsp;# do something else
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python