2010-04-27 34 views
38

J'ai un script python que je voudrais exécuter à intervalles réguliers. Je cours Windows 7. Quelle est la meilleure façon d'accomplir ceci? Moyen le plus simple?Schedule Python Script - Windows 7

+0

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

Répondre

54

Vous pouvez le faire dans la ligne de commande comme suit:

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

Cela va créer une tâche horaire appelée « PythonTask ». Vous pouvez remplacer HOURLY par DAILY, WEEKLY etc. PATH_TO_PYTHON_EXE sera quelque chose comme: C: \ python25 \ python.exe. Consultez d'autres exemples en écrivant ceci dans la ligne de commande:

schtasks /? 

Sinon, vous pouvez ouvrir le Planificateur de tâches et de le faire à travers l'interface graphique. J'espère que cela aide.

+0

«/RU système » vous permettra d'avoir le script exécuté même lorsque l'utilisateur n'est pas connecté, utile pour les serveurs, etc. – Paolo

7

Un moyen simple de faire cela est d'avoir un script en cours d'exécution avec une boucle de retard. Par exemple:

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

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

Ensuite laissez ce script en cours d'exécution et il fera son travail une fois par heure.

Notez qu'il ne s'agit que d'une approche du problème; L'utilisation d'un service fourni par le système d'exploitation, tel que le planificateur de tâches, est une autre méthode qui évite d'avoir à laisser votre script s'exécuter tout le temps.

+3

Quel est l'avantage comparé à Task Scheduler? Ou d'une autre façon, pourquoi gâcher avec TS, cela semble plus propre et plus facile. – Danijel

+2

Avec cette approche, il n'y a aucune garantie que la tâche est effectuée une fois toutes les heures ... Ce ne faire que il y a une heure entre les tâches .. pourrait faire une différence si votre tâche prend plus de quelques secondes. – user3817518

47

Vous pouvez utiliser l'interface graphique à partir du panneau de commande (appelées « tâches planifiées ») pour ajouter une tâche, la plus grande partie devrait être explicite, mais il y a deux choses à surveiller:

  • Assurez-vous de renseigner C:\python27\python.exe comme chemin d'accès au programme et le chemin d'accès à votre script comme argument.

  • Si vous choisissez Run whether user is logged on or not, j'obtiens une erreur: The directory name is invalid (0x87010B). Choisir Run only when user is logged on "résout" ce problème.

Cela m'a pris un peu pour comprendre ...

+0

Cela ne fonctionne pas pour moi. Comment voyez-vous ce qu'est l'erreur? – endolith

+1

@endolith Il y a des années que je posté cette réponse, et n'ont pas vraiment une machine Windows pour tester :-) De mémoire, je pense que vous pouvez le voir dans le même écran où vous définissez quelque part les tâches ... Si vous ne peut pas le trouver, c'est probablement un bon sujet pour une autre question ;-) (peut-être mieux posté sur [SuperUser] (https://superuser.com). – Carpetsmoker