2010-04-27 10 views
38

Tengo un script de Python que me gustaría ejecutar a intervalos regulares. Estoy ejecutando Windows 7. ¿Cuál es la mejor manera de lograr esto? ¿La manera más fácil?Programar Python Script - Windows 7

+0

ver esto: https://blogs.esri.com/esri/arcgis/2013/07/30/scheduling-a-scrip/ –

Respuesta

54

Puede hacerlo en la línea de comandos de la siguiente manera:

schtasks /Create /SC HOURLY /TN PythonTask /TR "PATH_TO_PYTHON_EXE PATH_TO_PYTHON_SCRIPT" 

que creará una tarea por hora llamado 'PythonTask'. Puede reemplazar HOURLY con DAILY, WEEKLY etc. PATH_TO_PYTHON_EXE será algo así como: C: \ python25 \ python.exe. Compruebe hacia fuera más ejemplos escribiendo esto en la línea de comandos:

schtasks /? 

lo contrario se puede abrir el Programador de tareas y hacerlo a través de la interfaz gráfica de usuario. Espero que esto ayude.

+0

"/ RU system" le permitirá ejecutar el script incluso cuando el usuario no haya iniciado sesión, es útil para servidores, etc. – Paolo

7

Una forma simple de hacer esto es tener un script que se ejecuta continuamente con un bucle de retraso. Por ejemplo:

def doit(): 
    print "doing useful things here" 

if __name__ == "__main__": 
    while True: 
     doit() 
     time.sleep(3600) # 3600 seconds = 1 hour 

A continuación, deje este script en ejecución, y hará su trabajo una vez por hora.

Tenga en cuenta que este es solo un enfoque del problema; El uso de un servicio proporcionado por el sistema operativo como el Programador de tareas es otra forma de evitar tener que dejar el script en ejecución todo el tiempo.

+3

¿Cuál es la ventaja de esto en comparación con el Programador de tareas? O al revés, ¿por qué meterse con TS, esto parece más limpio y más fácil. – Danijel

+2

Con este enfoque, no hay garantía de que la tarea se realice una vez por hora ... Esto solo asegura que haya una hora entre las tareas ... podría marcar la diferencia si su tarea lleva más de unos pocos segundos. – user3817518

47

Puede utilizar la interfaz gráfica de usuario desde el panel de control (llamadas "tareas programadas") para agregar una tarea, la mayor parte de ella debe explicarse por sí mismo, pero hay dos cosas a tener en cuenta:

  • Asegúrese de completar C:\python27\python.exe como la ruta del programa y la ruta a su secuencia de comandos como argumento.

  • Si elige Run whether user is logged on or not me sale un error: The directory name is invalid (0x87010B). Elegir Run only when user is logged on "resuelve" este problema.

Esto me tomó un poco de averiguar ...

+0

Esto no funciona para mí. ¿Cómo ves cuál es el error? – endolith

+1

@endolith Han pasado años desde que publiqué esta respuesta, y realmente no tengo una máquina con Windows para probar :-) De memoria, creo que puedes verla en la misma pantalla donde estableces las tareas en algún lugar ... Si no puede encontrarlo, probablemente sea un buen tema para otra pregunta ;-) (tal vez mejor publicado en [SuperUser] (https://superuser.com). – Carpetsmoker