當前位置:首頁 » 編程語言 » java運行python文件

java運行python文件

發布時間: 2022-09-24 06:08:15

java運行python腳本的幾種方式

由於在項目需要執行Python,找尋相關資料,總結出以下幾種方式:

直接執行Python腳本代碼
引用 org.python包

1 PythonInterpreter interpreter = new PythonInterpreter();
2 interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); "); ///執行python腳本


2. 執行python .py文件

1 PythonInterpreter interpreter = new PythonInterpreter();
2 InputStream filepy = new FileInputStream("D:\\demo.py");
3 interpreter.execfile(filepy); ///執行python py文件
4 filepy.close();


3. 使用Runtime.getRuntime()執行腳本文件

這種方式和.net下面調用cmd執行命令的方式類似。如果執行的python腳本有引用第三方包的,建議使用此種方式。使用上面兩種方式會報錯java ImportError: No mole named arcpy。

1 Process proc = Runtime.getRuntime().exec("python D:\\demo.py");
2 proc.waitFor();

⑵ 怎麼使用java運行python腳本

1.直接執行Python腳本代碼
引用 org.python包
1 PythonInterpreter interpreter = new PythonInterpreter();
2 interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); "); ///執行python腳本


2. 執行python .py文件
1 PythonInterpreter interpreter = new PythonInterpreter();
2 InputStream filepy = new FileInputStream("D:\\demo.py");
3 interpreter.execfile(filepy); ///執行python py文件
4 filepy.close();


3. 使用Runtime.getRuntime()執行腳本文件
這種方式和.net下面調用cmd執行命令的方式類似。如果執行的python腳本有引用第三方包的,建議使用此種方式。使用上面兩種方式會報錯java ImportError: No mole named arcpy。
1 Process proc = Runtime.getRuntime().exec("python D:\\demo.py");
2 proc.waitFor();

⑶ 建立java與python的介面,讓java能調用python腳本。請問可以用什麼方式

不建議研究jython。比較簡單的思路是把python腳本完全當做一個外部程序,用shell方式調用它。
首先設計好python腳本的介面,把參數用命令行方式傳入,然後輸出列印出來。示例:

$ python func.py arg1 arg2
result
然後在java里就可以用Runtime來執行shell命令,解析輸出字元串然後得到結果。

⑷ 怎麼使用java運行python腳本

引用 org.python包
1 PythonInterpreter interpreter = new PythonInterpreter();
2 interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); "); ///執行python腳本

2. 執行python .py文件
1 PythonInterpreter interpreter = new PythonInterpreter();
2 InputStream filepy = new FileInputStream("D:\\demo.py");
3 interpreter.execfile(filepy); ///執行python py文件
4 filepy.close();

3. 使用Runtime.getRuntime()執行腳本文件
這種方式和.net下面調用cmd執行命令的方式類似。如果執行的python腳本有引用第三方包的,建議使用此種方式。使用上面兩種方式會報錯java ImportError: No mole named arcpy。
1 Process proc = Runtime.getRuntime().exec("python D:\\demo.py");
2 proc.waitFor();
本回答由電腦網路分類達人 朱冬梅推薦
評論
1 0

瓶邪
採納率:92% 來自團隊:網路知道電腦團 擅長: 電腦/網路 生活 電子數碼
其他回答

如果是jython,也就是運行在Jvm上的python的話,可以使用JSR223,JDK1.6已經包含了該擴展包。JSR223是一個用於解析多種腳本語言的庫包,其中包括Jython。除了JSR223包之外,還需要jython-engine.jar包。
ScriptEngine engine = new ScriptEngineManager().getEngineByName("python");
try
{
engine.eval(new FileReader("./script/listing.py"));
}
catch(ScriptException se)
{
}
catch(IOException ie)
{
}

⑸ 如何在Java中調用Python代碼

Jython(原JPython),是一個用Java語言寫的Python解釋器。 在沒有第三方模塊的情況下,通常選擇利用Jython來調用Python代碼, 它是一個開源的JAR包,你可以到官網下載 一個HelloPython程序 importorg.python.util.PythonInterpreter; publicclassHelloPython{ publicstaticvoidmain(String[]args){ PythonInterpreterinterpreter=newPythonInterpreter(); interpreter.exec("print('hello')"); } } 什麼是PythonInterpreter?它的中文意思即是「Python解釋器」。我們知道Python程序都是通過解釋器來執行的,我們在Java中創建一個「解釋器」對象,模擬Python解釋器的行為,通過exec("Python語句")直接在JVM中執行Python代碼,上面代碼的輸出結果為:hello 在Jvm中執行Python腳本 interpreter.execfile("D:/labs/mytest/hello.py"); 如上,將exec改為execfile就可以了。需要注意的是,這個.py文件不能含有第三方模塊,因為這個「Python腳本」最終還是在JVM環境下執行的,如果有第三方模塊將會報錯:javaImportError:Nomolenamedxxx 僅在Java中調用Python編寫的函數 先完成一個hello.py代碼: defhello(): return'Hello' 在Java代碼中調用這個函數: importorg.python.core.PyFunction; importorg.python.core.PyObject; importorg.python.util.PythonInterpreter; publicclassHelloPython{ publicstaticvoidmain(String[]args){ PythonInterpreterinterpreter=newPythonInterpreter(); interpreter.execfile("D:/labs/hello.py"); PyFunctionpyFunction=interpreter.get("hello",PyFunction.class);//第一個參數為期望獲得的函數(變數)的名字,第二個參數為期望返回的對象類型 PyObjectpyObject=pyFunction.__call__();//調用函數 System.out.println(pyObject); } } 上面的代碼執行結果為:Hello 即便只是調用一個函數,也必須先載入這個.py文件,之後再通過Jython包中所定義的類獲取、調用這個函數。 如果函數需要參數,在Java中必須先將參數轉化為對應的「Python類型」,例如: __call__(newPyInteger(a),newPyInteger(b)) a,b的類型為Java中的int型,還有諸如:PyString(Stringstring)、PyList(Iteratoriter)等。 詳細可以參考官方的api文檔。 包含第三方模塊的情況:一個手寫識別程序 這是我和舍友合作寫的一個小程序,完整代碼在這里:,界面上引用了corejava上的一段代碼。Python代碼是舍友寫的,因為在Python程序中使用了第三方的NumPy模塊,導致無法通過Jython執行。下面這個方法純粹是個人思路,沒有深入查資料。核心代碼如下: importjava.io.*; classPyCaller{ privatestaticfinalStringDATA_SWAP="temp.txt"; privatestaticfinalStringPY_URL=System.getProperty("user.dir")+"\test.py"; (Stringpath){ PrintWriterpw=null; try{ pw=newPrintWriter(newFileWriter(newFile(DATA_SWAP))); }catch(IOExceptione){ e.printStackTrace(); } pw.print(path); pw.close(); } publicstaticStringreadAnswer(){ BufferedReaderbr; Stringanswer=null; try{ br=newBufferedReader(newFileReader(newFile(DATA_SWAP))); answer=br.readLine(); }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } returnanswer; } publicstaticvoidexecPy(){ Processproc=null; try{ proc=Runtime.getRuntime().exec("python"+PY_URL); proc.waitFor(); }catch(IOExceptione){ e.printStackTrace(); }catch(InterruptedExceptione){ e.printStackTrace(); } } //測試碼 publicstaticvoidmain(String[]args)throwsIOException,InterruptedException{ writeImagePath("D:\labs\mytest\test.jpg"); execPy(); System.out.println(readAnswer()); } } 實際上就是通過Java執行一個命令行指令。

⑹ java和python是什麼

java和python都是一種面向對象的語言。

Java是一種面向對象的語言,有著和C/C++近似的語法。它是動態鏈接,允許新的代碼在運行時載入與運行,而不是動態類型的。Java的演變相對較慢,最近才合並了一些功能用以支持函數式編程。相對的這種語言和VM的哲學都是將向後兼容作為首要指令。
Python是完全面向對象的語言。函數、模塊、數字、字元串都是對象。而且完全支持繼承、重載、派生、多繼承,有益於增強源代碼的復用性。Python是建立一個可擴展的對象模型的常用語言。用於面向對象的設計並不意味著開發者用Python寫代碼時最常用的風格就是面向對象的風格,它同樣支持過程式編程,模塊化編程和某些方面的函數式編程。

想了解更多有關Java和Python的詳情,推薦咨詢達內教育。達內教育擁有1v1督學跟蹤式學習有疑問隨時溝通,企業級項目,課程穿插大廠真實項目講解,對標企業人才標准制定專業學習計劃,囊括主流熱點技術,理論知識+學習思維+實戰操作,打造完整學習閉環。達內教育實戰講師、經驗豐富、多種班型供學員選擇、獨創TTS8.0教學系統,滿足學生多樣化學習需求。感興趣的話點擊此處,免費學習一下

⑺ java運行python腳本時,報錯Exception in thread "main" SyntaxError: Illegal character in file

本地庫不在默認的路徑,編譯器無法找到導致的,再換eclipse也還會報這個錯誤。。。
首先確定已經安裝opencv,安裝好以後要把opencv-246.jar引入到項目的lib庫中,
opencv-246.jar在opencv的安裝目錄下的/build/java下。

其次就是設置項目的native庫,把opencv_java246.dll文件所在的目錄加入到Native library location中,opencv_java246.dll在opencv安裝目錄下的/build/java/x86或/build/java/x64中,前者是32位系統用的,後者64位。

⑻ java調用python程序問題

Strings;
Processprocess=Runtime.getRuntime().exec("/usr/bin/pythonmy.py");
BufferedReaderbufferedReader=newBufferedReader(newInputStreamReader(process.getInputStream());
while((s=bufferedReader.readLine())!=null){
System.out.println(s);
}
process.waitfor();

⑼ java運行python腳本時,報錯Exception in thread "main" SyntaxError: Illegal character in file

異常的線程,在MAIN中,在文件 AAA.PY中有編碼錯誤,建議全部統一用UTF8格式。不然容易報此錯出來

⑽ java運行python程序,.readLine()讀出的內容為null, proc.waitFor();返回值為1,求解

你在while循環里加行代碼
line = decodeUnicode(line);

熱點內容
我的世界伺服器地址後綴 發布:2025-01-10 02:55:40 瀏覽:520
百分30利潤怎麼演算法 發布:2025-01-10 02:47:26 瀏覽:963
怎麼查看已連接的wifi密碼 發布:2025-01-10 02:45:59 瀏覽:23
serv是什麼電腦伺服器 發布:2025-01-10 02:45:26 瀏覽:256
安卓hostapd源在哪裡 發布:2025-01-10 02:31:53 瀏覽:569
二級c語言證書查詢 發布:2025-01-10 02:20:25 瀏覽:457
大眾車的鍵盤鎖密碼是多少 發布:2025-01-10 02:20:24 瀏覽:241
如何將資料庫加密碼 發布:2025-01-10 02:14:46 瀏覽:952
阿里雲怎麼買游戲伺服器 發布:2025-01-10 02:01:51 瀏覽:847
dota和英雄聯盟哪個吃配置 發布:2025-01-10 02:00:33 瀏覽:181