解析crontab风格的行

44

我需要在Python中解析类似crontab的时间表定义(例如:00 3 * * *),并获取它应该上次运行的时间。

是否有一个良好的(最好是小型的)库可以解析这些字符串并将它们转换为日期?


可能是在Python中解析cron条目的重复问题,请查看python-crontab - Paolo Moretti
1
可能之前已经被问过: https://dev59.com/41HTa4cB1Zd3GeqPVuqT - John Giotta
python-crontab 是我调查的第一个解决方案之一,但它没有获取日期功能。 - Krumelur
1
既然我知道我正在寻找什么,我相信这更像是https://dev59.com/gG445IYBdhLWcg3w9O3R的重复。 - Krumelur
2个回答

83

也许 Python 包 croniter 适合您的需求。

用法示例:

>>> import croniter
>>> import datetime
>>> now = datetime.datetime.now()
>>> cron = croniter.croniter('45 17 */2  * *', now)
>>> cron.get_next(datetime.datetime)
datetime.datetime(2011, 9, 14, 17, 45)
>>> cron.get_next(datetime.datetime)
datetime.datetime(2011, 9, 16, 17, 45)
>>> cron.get_next(datetime.datetime)
datetime.datetime(2011, 9, 18, 17, 45)

2
这正是我需要的,而且我需要那里的get_prev函数。谢谢! - Krumelur
3
对于croniter给予加1的赞。我正在寻找Python版的Java Spring CronTrigger 的相当替代品。我认为后者的API更自然一些,但我并不太喜欢两种方式。我更喜欢一个无状态且不可变的对象,例如:cronExpr = CronExpression.compile("0 0 * * * "); datetime = cronExpr.next(datetime); - Pierre D

2

谢谢。但我没有找到如何从那段代码中提取确切的日期。 - Krumelur
https://pypi.org/project/cronex/ - 作者看起来是一样的。 - rjha94

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接