Java、Python程序中命令行調用Python算法腳本

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())
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章