【发布时间】:2017-08-30 06:46:48
【问题描述】:
如何从 java 调用和执行 python 类方法。我当前的 java 代码有效,但前提是我写:
if __name__ == '__main__':
print("hello")
但是我想执行一个类方法,不管if __name__ == '__main__':
我要运行的示例 python 类方法:
class SECFileScraper:
def __init__(self):
self.counter = 5
def tester_func(self):
return "hello, this test works"
基本上我想在 java 中运行 SECFileScraper.tester_func()。
我的 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无法实现。
【问题讨论】:
标签: java python processbuilder