[问题] python执行jar后续动作

楼主: chendiuan (D)   2018-08-23 16:19:07
小弟刚踏入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之类的)
麻烦各位的回复了,谢谢。
作者: s860134 (s860134)   2018-08-23 20:16:00
根据你的 java 程式而定gui 操作应该就要透过 win32api 或其他程式模仿gui 对窗口做操作process 有 stdin.write 你试试看对他写入符不符需求
楼主: chendiuan (D)   2018-08-24 10:10:00
有试过threading.Thread,但是窗开启后就不会有进一步动作,反而关掉视窗才会继续
作者: s860134 (s860134)   2018-08-24 12:21:00
所以你是要结束程式嘛?那用 os.kill 等方式送 term 给子行程不就得了?
楼主: chendiuan (D)   2018-08-24 13:39:00
我的意思是尝试各种方法后仅止于启动无法下一步也许就像你说的要视java程式而定
作者: s860134 (s860134)   2018-08-24 19:02:00
popen 代入 stdin ,communicate 会回传三个 其中包含 stdin对 stdin 写入会有类似你用 cmd 开启程式后的输入接口你执行环境是Linux还是 。windows
楼主: chendiuan (D)   2018-08-27 09:25:00
我的作业系统是linux,由于lunch进去java之后还有许多动作要执行,且都是图形化接口..launch... sorry

Links booklink

Contact Us: admin [ a t ] ucptt.com