2010-04-27 11 views
38

Ho uno script python che vorrei eseguire ad intervalli regolari. Sto usando Windows 7. Qual è il modo migliore per farlo? Il modo più semplice?Schedule Python Script - Windows 7

+0

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

risposta

54

Lo si può fare nella riga di comando come segue:

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

che creerà un compito oraria chiamato 'PythonTask'. È possibile sostituire ORARIO con DAILY, WEEKLY ecc. PATH_TO_PYTHON_EXE sarà qualcosa del tipo: C: \ python25 \ python.exe. Check out più esempi scrivendo questo nella riga di comando:

schtasks /? 

altrimenti si può aprire il Task Scheduler e farlo attraverso la GUI. Spero che questo aiuti.

+0

"/ Sistema RU" consente di eseguire lo script anche quando l'utente non ha effettuato l'accesso, utile per i server, ecc. – Paolo

7

Un modo semplice per eseguire questa operazione è avere uno script in esecuzione continua con un ciclo di ritardo. Ad esempio:

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

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

Quindi lasciare questo script in esecuzione e farà il suo lavoro una volta all'ora.

Si noti che questo è solo un approccio al problema; l'utilizzo di un servizio fornito dal sistema operativo come l'Utilità di pianificazione è un altro modo che evita di dover lasciare lo script sempre in esecuzione.

+3

Qual è il vantaggio di questo rispetto all'utilità di pianificazione? O in un altro modo, perché scherzare con TS, questo sembra più pulito e più facile. – Danijel

+2

Con questo approccio, non vi è alcuna garanzia che l'attività venga eseguita una volta ogni ora ... Questo assicura solo che ci sia un'ora tra le attività .. potrebbe fare la differenza se l'attività richiede più di pochi secondi. – user3817518

47

È possibile utilizzare l'interfaccia grafica del pannello di controllo (cd "operazioni pianificate") per aggiungere un'attività, la maggior parte di esso dovrebbe essere auto-esplicativo, ma ci sono due cose da guardare fuori per:

  • Assicurati di inserire C:\python27\python.exe come percorso del programma e il percorso del tuo script come argomento.

  • Se si seleziona Run whether user is logged on or not Viene visualizzato un messaggio di errore: The directory name is invalid (0x87010B). La scelta di Run only when user is logged on "risolve" questo problema.

Questo mi ha portato un po 'per capire ...

+0

Questo non funziona per me. Come vedi qual è l'errore? – endolith

+1

@endolith Sono passati anni da quando ho postato questa risposta, e in realtà non ho una macchina Windows per i test :-) Dalla memoria, penso che puoi vederlo nella stessa schermata in cui imposti i compiti da qualche parte ... Se tu non riesco a trovarlo, è probabilmente un buon argomento per un'altra domanda ;-) (forse meglio pubblicato su [SuperUser] (https://superuser.com). – Carpetsmoker