Python-скрипт выполняет другой скрипт и возобновляет работу после того, как второй скрипт завершит свою работу - PullRequest
1 голос
/ 21 июля 2011

Есть ли способ проверить, завершил ли подпроцесс свою работу?Мой скрипт Python выполняет 123.exe из cmd.Затем 123.exe делает некоторые вещи и в конце записывает 1 или 0 в текстовый файл.Затем скрипт Python читает текстовый файл и продолжает работу, если '1', и останавливается, если '0'.На данный момент все, что я могу придумать, это уложить скрипт на Python на минуту.Таким образом, 123.exe наверняка записал 1 или 0 в текстовый файл.Эта реализация очень проста, но в то же время глупа.

Итак, мой вопрос, есть ли способ решить эту проблему без необходимости тайм-аута?Как заставить скрипт python ждать, пока не остановится 123.exe?

Ответы [ 3 ]

3 голосов
/ 21 июля 2011

Использование:

retcode = subprocess.call(["123.exe"])

Это выполнит команду, подождет, пока она не завершится, и вы получите код возврата в retcode (таким образом, вы также можете избежать необходимости проверять файл состояния вывода., если команда возвращает правильный код возврата).

Если вам нужно вручную создать экземпляр subprocess.Popen, перейдите к

Popen.wait()

(а затем проверьте Popen.returncode).

1 голос
/ 21 июля 2011

Я бы использовал сокращение call() из модуля подпроцесса.Из документации:

Запустить команду с аргументами.Дождитесь завершения команды, затем верните атрибут кода возврата.

Это должно работать следующим образом:

import subprocess
retcode = subprocess.call(["123.exe"])

конечно, вы не будете использовать retcode, но вашВ любом случае скрипт будет зависать до тех пор, пока не завершится работа 123.exe.

0 голосов
/ 21 июля 2011

Попробуйте это:

p = subprocess(...)
os.waitpid(p.pid, 0)

Это будет ждать, пока процесс не будет завершен, и ваш сценарий продолжится отсюда.

...