2017-05-03 28 views
1

私はpythonコードを書いて.javaファイルを呼び出し、コンパイルします。& pythonを使って実行します。私は次のPythonコードを使用していますPythonを使用してJavaの出力を呼び出す&

import os 
import os.path,subprocess 
from subprocess import STDOUT,PIPE 
path='Location where my .java file is' 
os.chdir(path) 
def compile_java(java_file): 
    subprocess.check_call(['javac', java_file]) 


def execute_java(java_file): 
    java_class,ext = os.path.splitext(java_file) 
    cmd = ['java', java_class] 

compile_java('Hello.java')  
execute_java("Hello") 

私の.javaファイルには単純なhello worldコードが含まれています。コードは次の通りです

public class Hello { 

    public static void main(String[] args) { 
    System.out.println("Hello world"); 
    } 

} 

私のpythonコードは正常に実行されていますが、私のPythonコンソールには「Hello World」というメッセージは表示されません。私のPythonコンソールにJava出力(Hello World)を出力するのを助けてくれますか?あなたはpopenを使用してコマンドを実行することができ、事前

+3

は、あなたが実際にサブプロセスを使用してcmd' '実行されません。 – FamousJameous

+0

[この回答](http://stackoverflow.com/a/4416529/355230)で行われているようなものが、おそらく動作します。 – martineau

答えて

1

に ありがとう:

def execute_java(java_file): 
    java_class,ext = os.path.splitext(java_file) 
    cmd = 'java '+ java_class 
    f = os.popen(cmd) 
    print f.read() 
+0

@ Bajalさん、ありがとうございます。しかし、whileループを使って複数の出力を取得したいのかどうかを調べたいのであれば、それは動作しません。たとえば、while(result.next()){ // Retrieve by の文字列名= result.getString(1); //アドレスで取得する String address = result.getString(2); //会社検索 文字列company = result.getString(3); System.out.println(名前+ ":" +家族+ ":" +会社); } –

+0

を提案してもらえますか実際には、STDOUT全体を出力するだけなので、同じコードが複数の行出力に対して機能するはずです。 resultSetに1つの行しかない可能性はありますか? – Bajal

関連する問題