python用脚本执行exe文件,输入用户名,密码等

时间:2016-06-15 14:00:47

标签: python pipe subprocess popen

我想调用一个exe文件,并且已经输入了参数/输入数据。

cmd = dir_path + 'file.exe do something test'
p = Popen(cmd, shell=True, stdout=PIPE, stderr=STDOUT)

这已经很好了。如果您使用exe文件执行此操作,则按Enter键以执行下一步,即输入您的用户名。然后是密码等。现在我不知道如何将这个实现到我的脚本中,这些步骤都是我的脚本完成的。基本上我不知道如何使用python进行ENTER步骤。感谢任何帮助。

更新

现在尝试了两种方式(在这个问题中提到的所有方法或者stackoverflow上的其他方法)。

方式1>

p = subprocess.Popen(cmd, shell=False, stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE, universal_newlines=True)
# cmd represents the path of the exe file 
p.stdin.write(username+"\n")
p.stdin.write(password+"\n")
p.sdin.close()

方式2

p = subprocess.Popen(cmd, shell=False, stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE, universal_newlines=True)

out,err = p.communicate("\n".join([username,password,"\n"]))
# last \n should terminate the exe file and communicate should wait for the process to exit

两种方式都在一行中呈现相同的输出:

  

用户名:密码:

通常我希望它会是:

  

用户名:"用户编写的用户名+ \ n"
  密码:"密码由进程+ \ n"

写入

应用程序在windows7上运行(必须),exe文件在命令行中运行。

因此,exe可能不支持 way1 way2 ,因此不可能通过子进程编写它或者我犯了一个重大错误?!

再次感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

你几乎就在那里!

您可以执行以下操作:

import subprocess
p = subprocess.Popen(cmd, stdin=subprocess.PIPE, shell=True)
p.communicate(input='\r')

如果有任何问题,您可能需要使用\ n而不是\ r \ n。 \ r \ n是回车符,\ n是换行符。