Как и многие другие вопросы, у меня есть сценарий Python, основанный на Windows , который попытается выполнить 1 или более вводных подпроцессов, вызывая пакетные файлы и открывая их в новых окнах командной строки (оболочки),Я хочу дождаться окончания обработки этих пакетных файлов, а затем вызвать действие, которое будет использовать выходные данные этих вводных процессов и продолжить выполнение кода.
Основываясь на ответах, я безуспешно пробовал следующее.Мне кажется, как только пакетный файл начинает выполнение, подпроцесс возвращает состояние 0 и перестает ждать / общаться!У меня есть все примеры кодов ниже, а также вывод.Я был бы признателен, если у кого-нибудь есть подсказка / подсказка о том, как это можно сделать, если это выполнимо в Windows?
- Popen.wait (),
- Popen.communicate (),
- Popen.call (),
- subprocess.getstatusoutput ()
- subprocess.check_call ()
файл Python, start.py :
mycommand = "start test.bat"
process = subprocess.Popen(mycommand, shell=True)
#, stdout=logfile, universal_newlines=True)
if process.poll() == None:
print ("Pre Poll = None")
else:
print("Pre Poll = Value")
# process.wait()
process.communicate()
if process.poll() == None:
print ("Post Poll = None")
else:
print("Post Poll = Value")
print ("Exit of Loop: ", process.returncode)
Пакетный файл, start.bat :
@echo off
echo Start of Loop
echo .
for /L %%n in (1,1,10000) do echo %%n
echo .
echo End of Loop
ВыходPython:
Pre Poll = None
Post Poll = Value
Exit of Loop: 0
, пока пакетный файл все еще находится в цикле: