java調用python腳本並向python腳本傳遞參數


 

1、安裝Eclipse

先安裝jdk,再安裝Eclipse,成功后開始建立py_java項目,在這個項目的存儲目錄SRC下建立test包,在test包中New-Class,新建MyDemo類,建好完成后就可以在MyDemo中寫代碼了

2、python腳本內容

import numpy as np
from selenium import webdriver


def main():
    url = 'https://www.tianyancha.com/login'
    driver = webdriver.Chrome()
    driver.get(url)
if __name__ == '__main__':
    a = np.ones(3)
    print(a)
    print('java 調用有第三方庫的python腳本成功')
    main()

  調用了兩個三方庫,有輸出操作和打開瀏覽器操作

3、MyDemo類的代碼(java調用python腳本)

package test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class MyDemo {
	
	public static void main(String[] args) { 
		try {
		   System.out.println("start");
		   String[] args1=new String[]{"python","D:\\pyworkpeace\\9_30_1.py"};
		   Process pr=Runtime.getRuntime().exec(args1);
		   
		   BufferedReader in = new BufferedReader(new InputStreamReader(
		     pr.getInputStream()));
		   String line;
		   while ((line = in.readLine()) != null) {
		    System.out.println(line);
		   }
		   in.close();
		   pr.waitFor();
		   System.out.println("end");
		  } catch (Exception e) {
		   e.printStackTrace();
		  }}
	public void test(){
		System.out.println("我的第一個方法C");
	}

}

  

4、運行結果如下所示

不光有打印窗口,而且還彈出了天眼查的瀏覽器,程序完成后瀏覽器也就關閉了

5、java動態傳遞參數

    這次要做的是通過java傳遞url給python腳本,而python腳本用瀏覽器打開接收到的url網頁。

(1)首先定義一個url參數在java中 ;String url="http://blog.csdn.net/thorny_v/article/details/61417386";

(2)將參數傳遞給python;  String[] args1 = new String[] { "python", "D:\\pyworkpeace\\9_30.py", url}; 

java中其他地方完全一樣 沒有改動

(3)python中需要做一點小變動,重寫了一下代碼

import sys
from selenium import webdriver


def main(a):
    driver = webdriver.Chrome()  # 打開瀏覽器
    driver.get(a)  # 瀏覽器打開指定頁面
if __name__ == '__main__':
    for i in range(1, len(sys.argv)):
        url = sys.argv[i]
        main(url)

  其中需要注意的是接收參數從sys.argv[1]開始,sys.argv[0]是python腳本的參數地址,沒什么用。最后就大功告成了

//這個程序可以調用python腳本,並向python腳本中傳遞參數

package test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class test_1 {
    
    public static void main(String[] args) { 
        try {
           //String a=getPara("car").substring(1),b="D34567",c="LJeff34",d="iqngfao";
           //String[] args1=new String[]{ "python", "D:\\pyworkpeace\\9_30_1.py", a, b, c, d };
           //Process pr=Runtime.getRuntime().exec(args1);
           String url="http://blog.csdn.net/thorny_v/article/details/61417386";
           System.out.println("start;"+url);
           String[] args1 = new String[] { "python", "D:\\pyworkpeace\\9_30.py", url}; 
           Process pr=Runtime.getRuntime().exec(args1);
           BufferedReader in = new BufferedReader(new InputStreamReader(
             pr.getInputStream()));
           String line;
           while ((line = in.readLine()) != null) {
            System.out.println(line);
           }
           in.close();
           pr.waitFor();
           System.out.println("end");
          } 
        catch (Exception e) {
           e.printStackTrace();
          }
        }
    private static String getPara(String string) {
        // TODO Auto-generated method stub
        return null;
    }


}
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM