javaからpythonクラスメソッドを呼び出して実行するにはどうすればよいですか?私が実行したいと思いますJava - processbuilderを使用してpythonクラスを呼び出す方法
if __name__ == '__main__':
print("hello")
しかし、私は関係なく、if __name__ == '__main__':
例Pythonのクラスメソッドの、クラスのメソッドを実行したい:
私の現在のJavaコードは動作しますが、私が書く場合にのみ、class SECFileScraper:
def __init__(self):
self.counter = 5
def tester_func(self):
return "hello, this test works"
私は基本的にSECFileScraper.tester_func()をjavaで実行したいと考えています。
私のJavaコード:
try {
ProcessBuilder pb = new ProcessBuilder(Arrays.asList(
"python", pdfFileScraper));
Process p = pb.start();
BufferedReader bfr = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
System.out.println("Running Python starts: " + line);
int exitCode = p.waitFor();
System.out.println("Exit Code : " + exitCode);
line = bfr.readLine();
System.out.println("First Line: " + line);
while ((line = bfr.readLine()) != null) {
System.out.println("Python Output: " + line);
}
} catch (Exception e) {
e.printStackTrace();
}
pdfFileScraperは私のPythonスクリプトへのファイルパスです。
私はjythonを試しましたが、私のpythonファイルはpandasとsqlite3を使用していますが、これはjythonを使って実装することはできません。
をそれは何も出力しない:この方法では、新しいプロセスを起動していない、あなたはサンプルのため、ここで見てみましょうなど
スクリプトの呼び出しの間でコンテキストを共有することができます。 '実行中のPythonが始まる: 終了コード:0 ファーストライン:null' – Theo
ProcessBuilderは* printed *の出力を扱うことしかできないので、文字列を返す行は実際には解析できるものを表示しません。 'print 'する必要があります。このテストは、' '望む結果を得るために働きます。 Pythonオブジェクトと直接対話したい場合は、mkoのようなソリューションを使用する必要があります。つまり、VMでPythonインタプリタをロードし、直接インタラクトします。 – Petesh