выполнение сценария Python в Windows с помощью Java Runtime.exec - PullRequest
1 голос
/ 21 июля 2011

У меня есть скрипт на python, который запускается в Windows и использует расширения win32 и WMI для получения некоторой информации. Если я запускаю скрипт с помощью командной строки, он выполняется отлично. Но если я попытаюсь запустить тот же сценарий, используя java Runtime.exec ("python myscript.py"), он, похоже, заблокируется в waitFor (). Код такой:

Process p = Runtime.getRuntime().exec("python myscript.py");
int exitCode = p.waitFor();

Если я попытаюсь использовать этот же Java-код с каким-то очень простым скриптом Python, таким как

print "hello world"

Я получаю код выхода 0, что означает, что он работает. Могу ли я выполнить скрипт Python, который импортирует библиотеку WMI, используя java Runtime.exec ()?

Спасибо

1 Ответ

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

Одной из вероятных причин является то, что ваши буферы ввода-вывода заполнены и должны быть очищены, поэтому попробуйте сбросить как stdout, так и stderr из вашего процесса в коде java ( пример кода ).

В качестве альтернативы, вы можете попробовать перенаправить весь вывод в NUL или текстовый файл с одним из следующих аргументов для exec:

cmd.exe /c python myscript.py > NUL 2>&1

cmd.exe /c python myscript.py > output.txt 2>&1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...