Java程序通過命令行形式調用Python腳本
主函數可以這樣寫 代碼片
.
//寫調用python腳本的cmd 例如python main.py -f filename
public static void main(String[]args){
String cmd = "python main.py";
String results = algorithm(cmd);
System.out.println(results);
}
ps:保證在命令行窗口下可以執行編輯的cmd;
下面展示調用函數的 代碼片
.
// 調用腳本函數
public static String algorithm(String cmd) {
Process process;
try {
process = Runtime.getRuntime().exec(cmd);
process.waitFor();
String inStr = consumeInputStream(process.getInputStream());
String errStr = consumeInputStream(process.getErrorStream());
return inStr;
} catch (Exception e) {
return "";
}
};
下面展示consumeInputStream函數的 代碼片
.
// 返回腳本執行結果
private static String consumeInputStream(InputStream inputStream) throws IOException {
BufferedReader inBuffer = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder output = new StringBuilder();
String line = null;
while ((line = inBuffer.readLine()) != null) {
output.append(line);
}
inBuffer.close();
return output.toString();
}
Python程序調用命令行
主函數可以這樣寫 代碼片
.
//寫調用python腳本的cmd 例如python main.py -f filename
import subprocess
def main():
cmd = 'python main.py'
p = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
//保存結果
p.wait()
result_lines = p.stdout.readlines() # 從子進程 p 的標準輸出中讀取所有行,並儲存在一個list對象中
for line in result_lines:
print(line.strip())