Python: получить код возврата подпроцесса ant в windows - PullRequest
0 голосов
/ 04 декабря 2009

Я использую Python для вызова муравья, я хочу получить код возврата муравья для обнаружения ошибки муравья.

например, в 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

но в питоне:

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

>>> a.wait() 
0

Поскольку ant - это bat-файл, поэтому я должен использовать shell = True для вызова Popen. Итак, как я могу получить код возврата (1) в Python?

РЕДАКТИРОВАТЬ : Я нашел, что использование "call ant ..." решит эту проблему, спасибо за ответы.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2012

Начиная с этого поста, рекомендуется использовать модуль подпроцесса для вызова приложений, например:

#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 версия: 3.2.1 (по умолчанию, 10 июля 2011, 20:02:51) [MSC v.1500 64 бит (AMD64)] Версия для Windows: Windows 7

0 голосов
/ 04 декабря 2009

Моя идея решить это: Получите регулярное выражение для выходного потока. Если типичные ключевые слова встречаются как «Ошибка», вам сообщат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...