2009-12-04 7 views
-2

J'utilise python pour appeler ant, je veux obtenir le code retour de la fourmi pour détecter l'erreur ant.Python: obtenir le code de retour du sous-processus ant dans Windows

par exemple, dans cmd.exe,

C:\Documents and Settings\Administrator>ant sfsf 
Buildfile: build.xml does not exist! 
Build failed 
C:\Documents and Settings\Administrator>echo %ERRORLEVEL% 
1 

mais en python:

>>> a = subprocess.Popen("ant hahah",shell=True) 
>>> Buildfile: build.xml does not exist! 
Build failed 

>>> a.wait() 
0 

Parce que la fourmi est un fichier de chauve-souris, donc je dois utiliser shell = True pour appeler le Popen. Alors, comment puis-je obtenir le code de retour (1) en Python?

EDIT: J'ai trouvé l'utilisation "appel ant ..." va résoudre ce problème, merci pour les réponses.

Répondre

0

Mon idée pour résoudre ceci: Obtenez une certaine regex sur le flux de sortie. Si des mots-clés typiques se présentent comme "Erreur", vous en serez informé.

0

A ce poste, il est recommandé que le module subprocess être utilisé pour appeler les applications, donc par exemple:

#Change to the correct project directory (with your build.xml) 
os.chdir(project_dir) 
print(os.path.abspath(os.curdir)) 
#debug is your ant task, Get the return code, (note shell=True can be a large security risk) 
output_return_code=subprocess.call(["ant","debug"],shell=True) 

#or to caputure the output 
output_text=subprocess.check_output(["ant","debug"],shell=True) 
print(str(output_text,"utf-8").strip()) 

Python Version: 3.2.1 (par défaut 10 Jul 2011, 20:02:51) [MSC v.1500 64 bits (AMD64)] Version de Windows: Windows 7

Questions connexes