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

在python中访问APScheduler cron触发器字段值,python,apscheduler,crontrigger,Python,Apscheduler,Crontrigger,类似于,我想从APScheduler中提取cron作业触发器的信息。 但是,我需要的是day_of_week字段,而不是所有内容。使用 for job in scheduler.get_jobs(): for f in job.trigger.fields: print(f.name + " " + str(f)) 我可以看到所有字段,例如周、小时、周中的天,但是 job.trigger.day_of_week似乎不是CronTrigger对象的“属性”。我不知道job.trigg

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

for job in scheduler.get_jobs():
  for f in job.trigger.fields:
    print(f.name + " " + str(f))
我可以看到所有字段,例如周、小时、周中的天,但是

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

如何仅提取一周中的一天字段,以及该触发器类是如何构造的

潜得更深我发现了

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')>

我非常感谢您的任何建议/提示

查看代码,您应该能够使用CronTrigger类的field_NAMES属性获取day_of_week字段,而无需对索引进行硬编码,例如

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:
   # do something
if dow_value_as_string = "*":
   # do something else

嘿,谢谢你!你能不能详细说明一下,这个字段的名称属性和索引是如何工作的?为什么CronTrigger的字段是有序的?这是python本身吗?FIELD_NAMES是定义的CronTrigger类的一个属性。它是在代码中明确定义的,而不是某种内置的python魔法。属性是字段名列表,索引函数是列表的内置函数,返回列表中第一次出现的“day\u of_week”的索引。
dow_value_as_string = str(dow)
if 'mon' in dow_value_as_string:
   # do something
if dow_value_as_string = "*":
   # do something else