2011-09-12 12 views
17

Necesito analizar una definición de cronograma similar a Python (por ejemplo, 00 3 * * *) y llegar a donde debería haber ejecutado la última vez.Analizando líneas crontab-style

¿Hay una buena biblioteca (preferiblemente pequeña) que analiza estas cadenas y las traduce a fechas?

+0

duplicado possibile de [Parse una entrada cron en Python] (http://stackoverflow.com/questions/1511854/parse-a-cron-entry-in-python), eche un vistazo a [python-crontab] (http://pypi.python.org/pypi/python-crontab/) –

+1

Posiblemente preguntado antes: http://stackoverflow.com/questions/4190997/is-there-a -python-module-to-get-next-runtime-from-a-crontab-style-time-definition –

+0

python-crontab fue una de las primeras soluciones que investigué, y no tiene la funcionalidad para obtener las fechas. – Krumelur

Respuesta

35

Quizás el paquete de python croniter se adapte a sus necesidades. ejemplo

Uso:

>>> 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) 
+0

Esto es exactamente lo que necesito, y necesito la función get_prev que está allí. ¡Gracias! – Krumelur

+0

+1 para croniter. Estaba buscando un equivalente en Python de [Spring CronTrigger] de Java (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/support/CronTrigger.html). Creo que la API de este último es un poco más natural, aunque tampoco me gusta mucho. Preferiría preferir un objeto apátrida e inmutable, por ejemplo, 'cronExpr = CronExpression.compile (" 0 0 * * * "); datetime = cronExpr.next (datetime); '. –