2011-07-20 38 views
1

我有一個python腳本,它運行在windows上並使用win32擴展和WMI來獲取一些信息。如果我使用命令行運行腳本,它將完美執行。但是,如果我嘗試使用java Runtime.exec(「python myscript.py」)運行相同的腳本,它似乎在waitFor()上被阻塞。該代碼是這樣的:在Windows上使用java Runtime.exec執行python腳本

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

如果我嘗試使用相同的Java代碼中一些非常簡單的Python腳本像

print "hello world" 

我得到的退出碼爲0,這意味着它的工作原理。我可以使用java Runtime.exec()來執行導入WMI庫的python腳本嗎?

感謝

回答

3

一個可能的原因是你的IO緩衝區已滿,需要刷新,所以儘量在Java代碼(example code)從處理沖刷標準輸出和標準錯誤。

或者,你可以嘗試重定向所有輸出到NUL或文本文件的下列參數之一高管:

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

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