Parece que no recibo el código de salida correcto de subprocess.call en Windows.Código de salida incorrecto en python al llamar a la secuencia de comandos de Windows
import subprocess
exit_code = subprocess.call(['ant.bat', 'fail'])
print exit_code # prints 0
Hacer lo mismo en las ventanas parece volver algo distinto de 0
> echo %errorlevel%
0
> ant fail
> echo %errorlevel%
1
¿No deberían los valores de ambas llamadas dar el mismo valor? ¿Estoy haciendo algo mal?
En el peor de los casos, ¿cómo puedo verificar el valor de% errorlevel% en mi secuencia de comandos python?
ACTUALIZACIÓN:
Probé algo como esto para obtener el valor errorlevel:
environment = os.environment.copy()
cmd = subprocess.Popen(['ant.bat', 'fail'], env = environment)
for key, value in environment.items():
print '%s = %s' % (key, value)
Sin embargo, no veo nivel de error en ese diccionario (os.getenv [ 'nivel de error'] también falla).
Tu código funciona para mí (en Windows 7). ¿Puedes darnos más detalles? ¿Puede ser que el problema esté en el archivo .bat en sí? – Michael