看板 Python 關於我們 聯絡資訊
小弟剛踏入Python不久,也沒甚麼Coding經驗.. 有個問題想請教各位大大, 倘若今天我用Python執行一個java.jar(如下) def Java(self, Log, Apptype = '', Hostname = CONFIG.Channel.IP, Webport = '', Username = CONFIG.User.Name, Password = CONFIG.User.PW): send = 'java -jar Java.jar' process = Popen(args=send, shell=True, stdout = subprocess.PIPE, stderr = subprocess.PIPE) ret = [] while process.poll() is None: line = process.stdout.readline() if line != '' and line.endswith('\n'): ret.append(line[:-1]) stdout, stderr = process.communicate() ret += stdout.split('\n') ret.remove('') return ret 執行成功跳出一個視窗之後,我還有辦法做後續動作嗎? (對視窗做點擊動作或是按下Enter之類的) 麻煩各位的回覆了,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.130.11.240 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1535012349.A.5DA.html
s860134: 根據你的 java 程式而定 08/23 20:16
s860134: gui 操作應該就要透過 win32api 或其他程式模仿gui 對窗 08/23 20:18
s860134: 口做操作 08/23 20:18
s860134: process 有 stdin.write 你試試看對他寫入符不符需求 08/23 20:24
chendiuan: 有試過threading.Thread,但是窗開啟後 08/24 10:10
chendiuan: 就不會有進一步動作,反而關掉視窗才會繼續 08/24 10:10
s860134: 所以你是要結束程式嘛? 08/24 12:21
s860134: 那用 os.kill 等方式送 term 給子行程不就得了? 08/24 12:22
chendiuan: 我的意思是嘗試各種方法後僅止於啟動無法下一步 08/24 13:39
chendiuan: 也許就像你說的要視java程式而定 08/24 13:40
s860134: popen 代入 stdin ,communicate 會回傳三個 其中包含 st 08/24 19:02
s860134: din 08/24 19:02
s860134: 對 stdin 寫入會有類似你用 cmd 開啟程式後的輸入介面 08/24 19:04
s860134: 你執行環境是Linux還是 。windows 08/24 19:20
chendiuan: 我的作業系統是linux,由於lunch進去java之後 08/27 09:25
chendiuan: 還有許多動作要執行,且都是圖形化介面.. 08/27 09:26
chendiuan: launch... sorry 08/27 09:27
chendiuan: 目前用了另一套軟體Sikuli來輔助,加上popen stdin 08/27 11:28
chendiuan: 是可以正常運作的,謝謝s大指教~ 08/27 11:28