Lorsque j'exécute un script python en utilisant subprocess.Popen(script, shell=True)
en un autre script python, est-il possible d'alerter python lorsque le script est terminé avant d'exécuter d'autres fonctions? Sur une note de côté, est-ce que je peux obtenir une sortie en temps réel du script python exécuté?
Je peux seulement obtenir la sortie de cela en faisant command>output.txt
mais c'est seulement après que tout le processus se termine. stdout
ne salue aucune sortie.Python: Vérifier quand une commande cmd termine son travail
2
A
Répondre
3
Lorsque vous créez un sous-processus avec Popen, il retourne un objet subprocess.Popen
qui a plusieurs méthodes pour accéder à l'état de sous-processus et les données:
- Vous pouvez utiliser
poll()
pour déterminer si un sous-processus est terminé.None
indique que le processus est terminé. - Sortie d'un script pendant son exécution peut être récupérée avec
communicate()
.
Vous pouvez combiner ces deux pour créer un script qui surveille la sortie d'un sous-processus et attend jusqu'à ce que son prêt comme suit:
import subprocess
p = subprocess.Popen((["python", "script.py"]), stdout=subprocess.PIPE)
while p.poll() is None:
(stdout, stderr) = p.communicate()
print stdout
1
Vous voulez attendre la Popen à la fin? Avez-vous essayé simplement ceci:
popen = subprocess.Popen(script, shell=True)
popen.wait()
Avez-vous pensé à utiliser le script python externe importer en tant que module au lieu de fraie un sous-processus?
En ce qui concerne la sortie en temps réel: essayez python -u ...
Questions connexes
- 1. joue un son de tick quand une seconde se termine
- 2. Y at-il un moyen de faire quelque chose quand un thread Perl termine son travail?
- 3. indiquant quand un processus execl() se termine
- 4. Commande CMD> Commande de taille FTP
- 5. commande multiple s'exécutant en cmd?
- 6. Comment vérifier si une ligne de commande particulière est en cours d'exécution dans cmd propmt
- 7. Comment combiner Cmd et Matplotlib en python
- 8. savoir quand ffmpeg termine la conversion
- 9. Vérifier si une commande produit sortie
- 10. Java: Démarrer un processus cmd qui n'exécutera pas son travail, mais chargé en mémoire
- 11. Timer fait son travail juste une fois
- 12. Python envoyer cmd sur socket
- 13. CMD Script: Comment fermer le CMD
- 14. python ide vs détection de ligne cmd?
- 15. Python dire quand un transfert ftp se termine à la fin
- 16. Comment vérifier si un programme se termine?
- 17. Faire quelque chose quand une boucle for se termine
- 18. WCF: Comment savoir quand une session se termine?
- 19. Comment détecter quand l'application se termine?
- 20. Comment puis-je garantir que la fonction renvoie une valeur avant que le thread secondaire créé ne termine son travail?
- 21. son python lib
- 22. relancer l'application quand elle se termine ou quand elle imprime un certain texte (stdout)
- 23. Comment savoir quand le processus se termine sous Linux?
- 24. Module Python Cmd, problème de sous-classement
- 25. Le processus Python ne se termine pas
- 26. Utilisation du sous-processus pour savoir quand un processus se termine
- 27. Cron travail de php (à la commande pour être exact)
- 28. exécuter la commande travailler dur non codé dans le script lorsque son dans une variable
- 29. Modifier UIActionSheet après avoir fait son travail
- 30. CMD Plein écran Visual Studio
Voulez-vous que le processus original qui a donné naissance au sous-processus est informé? Ou existe-t-il un processus séparé qui surveille l'exécution du script? En d'autres termes: cherchez-vous un simple "attendre que le script s'exécute" ou voulez-vous exécuter un script Python parallèlement au sous-processus? – jsalonen