作者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/cn.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