91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java 直接調用python腳本,并傳遞參數代碼實例

發布時間:2020-09-18 15:18:36 來源:腳本之家 閱讀:362 作者:ymlkl 欄目:編程語言

最近陸續用python寫了很多文件處理腳本,雖然功能都比較簡單 ,但還是感覺到python對文件處理的簡潔高效 ,越發覺得java的語法相當的繁瑣~

接到個需求處理ftp數據接口 。所以想把python腳本也用上。java代碼定時掃描ftp數據倉庫 ,調用python腳本入庫。

直接采用java執行系統命令的方式

@Async
	public void readFileByPython(List<String> filePaths) throws FileNotFoundException {
		URL localSrcUrl = AbstractReadFileLine.class.getResource("");
		String localSrcPath = localSrcUrl.getPath();
		localSrcPath = localSrcPath.substring(1, localSrcPath.length());
		String pythonFile = localSrcPath + "PythonFileHandle.py";
 
		int size = filePaths.size() + 2;
		String[] args = new String[size];
		args[0] = "python";
		args[1] = pythonFile;
		for(int i =0;i<filePaths.size() ;i++){
			int index = i+2;
			args[index] = filePaths.get(i);
		}
		try {
			
	      System.out.println("start"); 
	      Process proc = Runtime.getRuntime().exec(args);
	      InputStream is = proc.getErrorStream(); 
	      InputStreamReader isr = new InputStreamReader(is); 
	      BufferedReader br = new BufferedReader(isr); 
	      String line = null; 
	      System.out.println("<ERROR>"); 
	      while((line = br.readLine())!=null){ 
	          System.out.println(line); 
	          System.out.println("</ERROR>"); 
	          int exitValue = proc.waitFor(); 
	          System.out.println("Process exitValue="+exitValue); 
	      } 
	      System.out.println("end"); 
	      } catch (Exception e){ 
	      e.printStackTrace(); 
	      } 
	     
	}

String[] args = new String[size];   
args[0] = "python";  args[1] = pythonFile;    args[0]表示要執行的是python 腳本 ,args[1] 腳本文件的全路徑

該方法調用 AbstractReadFileLine.class 文件路徑下的 PythonFileHandle.py 腳本 ,并傳入String數組類型的參數(需要處理的文件全路徑)

PythonFileHandle腳本接受java傳入的文件路徑參數(數組),解析并入庫

PythonFileHandle.py 代碼

import pymssql,time,sys
reload(sys)
sys.setdefaultencoding("utf-8")
class MSSQL:
  def __init__(self,host,user,pwd,db):
    self.host = host
    self.user = user
    self.pwd = pwd
    self.db = db
 
  def __GetConnect(self):
    if not self.db:
      raise(NameError,"")
    self.conn = pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset="utf8")
    cur = self.conn.cursor()
    if not cur:
      raise(NameError,"")
    else:
      return cur
 
  def ExecQuery(self,sql):
    cur = self.__GetConnect()
    cur.execute(sql)
    resList = cur.fetchall()
 
    #
    self.conn.close()
    return resList
 
  def ExecNonQuery(self,sql):
    cur = self.__GetConnect()
    cur.execute(sql)
    self.conn.commit()
    self.conn.close()
    
def insertToCloseList(data ,ms): 
  sql = "insert into t_isee_closelist_infos (WORK_ORDER_ID,CRM_Cdsc_Id,APPRAISE_TYPE,CRM_Accept_Date,latn_code,theme_row_id,TASK_EXECUTE_ROW_ID,CRM_Accept_REASON,ASSET_INTEG_ID) values ( '" 
  temp ="' , '"
  sqlStr = temp.join(data)
  sql = sql + sqlStr + "')"
  ms.ExecNonQuery(sql)
 
 
 
ms = MSSQL(host="172.30.0.186",user="sa",pwd="",db="test")
fengefu = '$%$'
for i in range(1, len(sys.argv)):
  read = open(sys.argv[i] ,'r')
  for line in read:
    line=line.strip('\n') 
    data = line.split(fengefu)
    insertToCloseList(data,ms)
  read.close

sys.argv[0] 存儲的是py文件自身的路徑,故接受參數從sys.argv[1]開始。

以上所述是小編給大家介紹的java調用python腳本傳遞參數詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永寿县| 荆州市| 双峰县| 黎平县| 东乡族自治县| 祥云县| 兴业县| 平原县| 奉贤区| 镇坪县| 淮阳县| 洛浦县| 沁源县| 广饶县| 桃园县| 浑源县| 贺州市| 扶绥县| 井研县| 广汉市| 石嘴山市| 伊金霍洛旗| 虞城县| 广安市| 盐亭县| 兴文县| 保靖县| 淮北市| 义马市| 密山市| 冀州市| 清河县| 玛曲县| 高唐县| 房产| 耒阳市| 霍林郭勒市| 甘孜| 平邑县| 舟曲县| 额尔古纳市|