2011-07-20 27 views
1

私はWindows上で動作し、win32拡張機能とWMIを使用して情報を取得するPythonスクリプトを用意しています。コマンドラインを使用してスクリプトを実行すると、完全に実行されます。しかし、私がjava Runtime.exec( "python myscript.py")を使って同じスクリプトを実行しようとすると、waitFor()でブロックされているようです。コードは次のようである:私はJava Runtime.execを使用してWindows上でPythonスクリプトを実行

print "hello world" 

のようないくつかの非常に単純なPythonスクリプトでこれと同じJavaコードを使用しようとすると

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

私はそれが動作を意味し、終了コードが0であることを取得します。 java Runtime.exec()を使用して、WMIライブラリをインポートするPythonスクリプトを実行できますか?

おかげ

答えて

3

が理由として考えられるのは、あなたのIOバッファがいっぱいで、フラッシュする必要があるということですので、Javaコード(example code)で、あなたのプロセスからのstdoutとstderrの両方をフラッシュしてみてください。

また、あなたは、execするには、次のいずれかの引数でNULまたはテキストファイルにすべての出力をリダイレクトしてみてください:

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

cmd.exe /c python myscript.py > output.txt 2>&1 
関連する問題