我们正在尝试创建一个python脚本,通过Windows shell提示符安装应用程序,执行我们的python脚本。我们有来自app.exe的输出提示 “按Enter继续......”
我们尝试模拟 Enter 键,但它不起作用。该提示仍然没有移动到下一个向导步骤。
我们如何克服这个问题?
import subprocess
import win32console
APP_BIN = 'app.exe'
def main():
proc = subprocess.Popen([APP_BIN,'-i','console'],stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
proc.stdin.write("\r\n") <--- issue
output = proc.stdout.readline() <--- issue
print output
ret = proc.wait()
print ret
if __name__ == '__main__':
main()
答案 0 :(得分:3)
不完全确定如何在python中执行此操作,但我的建议是模拟实际的'enter'键按下命令。在您的代码中,您只是更改插入符号的位置而不是发出正确的返回。
看看这个:http://win32com.goermezer.de/content/view/136/254/
import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
shell.SendKeys("{ENTER}", 0)
看起来就像你需要的那样。
答案 1 :(得分:0)
以下内容可能有效(未经测试):
import subprocess
import win32console
APP_BIN = 'app.exe'
def main():
proc = subprocess.Popen([APP_BIN,'-i','console'],stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
stdoutdata, stderrdata = proc.communicate(input="\r\n")
output = stdoutdata.readline()
print output
ret = proc.wait()
print ret
if __name__ == '__main__':
main()