Je dois exécuter un outil sur environ 300 répertoires. Chaque course prend environ 1 minute à 30 minutes ou même plus que cela. J'ai donc écrit un script python ayant une boucle pour exécuter l'outil sur tous les répertoires les uns après les autres.Erreur d'écriture: tuyau cassé
mon script python a le code quelque chose comme:
for directory in directories:
os.popen('runtool_exec ' + directory)
Mais quand je lance le script python je reçois les messages d'erreur suivants à plusieurs reprises:
..
tail: write error: Broken pipe
date: write error: Broken pipe
..
Tout ce que je fais est de vous connecter sur un serveur distant utiliser ssh où l'outil, le script python et les répertoires de sujet sont conservés. Lorsque je cours individuellement l'outil à partir de l'invite de commande en utilisant la commande comme:
runtool_exec directory
cela fonctionne très bien. L'erreur "broken pipe" arrive seulement quand je cours en utilisant le script python. Une idée, solution de contournement?
Merci beaucoup pour votre réponse. Cela marche. Mais comment puis-je déterminer quel processus s'est terminé avec succès et lequel a eu une erreur? – Fahim
et aussi comment déterminer quels processus sont encore en cours d'exécution? Y a-t-il un moyen d'attendre que les sous-processus se terminent? – Fahim
J'essaie actuellement ceci: log = open (logFile, 'a'); process = subprocess.Popen (args, stdout = log) processus.wait() si traitement.returnCode> = 0: \t \t \t \t \t \t \t \t \t print 'fait! \t else: \t print 'Erreur! Le processus s'est mal terminé ' Mais je vois qu'il n'attend pas que les processus se terminent, et le code de retour est toujours 99. aidez s'il vous plaît. – Fahim