В моем python script мне нужно вызвать в цикле for исполняемый файл и ждать, пока этот исполняемый файл напишет результат на "output.xml".
Как мне можно использовать wait() и как я узнаю, когда один из моих исполняемых файлов завершил создание результата, чтобы получить результат? Как закрыть этот процесс и открыть новый, чтобы снова вызвать исполняемый файл и дождаться нового результата?
import subprocess
args = ("bin/bar")
popen = subprocess.Popen(args)
Мне нужно дождаться выхода из "bin/bar", чтобы сгенерировать "output.xml", а оттуда, прочитать его содержимое.
for index, result in enumerate(results):
myModule.callSubProcess(index)
#this is where the problem is.
fileOutput = open("output.xml")
parseAndStoreInSQLiteFileOutput(index, file)
Popen.wait()
заставит script ждать завершения процесса. После этого нет необходимости убивать процесс, так как он уже выйдет.
Я думаю, что самый простой способ - использовать call
:
import subprocess
retcode = subprocess.call('command', shell=True)
Он ожидает завершения процесса и назначения кода возврата переменной. Более подробное описание см. В 17.1.subprocess - удобные функции в документации на python. Надеюсь, поможет.