作者chendiuan (Dean)
看板Python
標題[問題] python執行jar後續動作
時間Thu Aug 23 16:19:07 2018
小弟剛踏入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://webptt.com/m.aspx?n=bbs/Python/M.1535012349.A.5DA.html
1F:→ s860134: 根據你的 java 程式而定 08/23 20:16
2F:→ s860134: gui 操作應該就要透過 win32api 或其他程式模仿gui 對窗 08/23 20:18
3F:→ s860134: 口做操作 08/23 20:18
4F:→ s860134: process 有 stdin.write 你試試看對他寫入符不符需求 08/23 20:24
5F:→ chendiuan: 有試過threading.Thread,但是窗開啟後 08/24 10:10
6F:→ chendiuan: 就不會有進一步動作,反而關掉視窗才會繼續 08/24 10:10
7F:→ s860134: 所以你是要結束程式嘛? 08/24 12:21
8F:→ s860134: 那用 os.kill 等方式送 term 給子行程不就得了? 08/24 12:22
9F:→ chendiuan: 我的意思是嘗試各種方法後僅止於啟動無法下一步 08/24 13:39
10F:→ chendiuan: 也許就像你說的要視java程式而定 08/24 13:40
11F:推 s860134: popen 代入 stdin ,communicate 會回傳三個 其中包含 st 08/24 19:02
12F:→ s860134: din 08/24 19:02
13F:→ s860134: 對 stdin 寫入會有類似你用 cmd 開啟程式後的輸入介面 08/24 19:04
14F:→ s860134: 你執行環境是Linux還是 。windows 08/24 19:20
15F:→ chendiuan: 我的作業系統是linux,由於lunch進去java之後 08/27 09:25
16F:→ chendiuan: 還有許多動作要執行,且都是圖形化介面.. 08/27 09:26
17F:→ chendiuan: launch... sorry 08/27 09:27
18F:→ chendiuan: 目前用了另一套軟體Sikuli來輔助,加上popen stdin 08/27 11:28
19F:→ chendiuan: 是可以正常運作的,謝謝s大指教~ 08/27 11:28