Состояние пакета, выполненного из Python (с использованием подпроцесса) - PullRequest
0 голосов
/ 26 ноября 2018

Как и многие другие вопросы, у меня есть сценарий 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

, пока пакетный файл все еще находится в цикле:

Output of test.bat in process

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