我有一个应用程序,我试图通过Python和子流程模块进行控制。本质上,我所做的是使用Popen(打开命令提示符在其中执行程序)启动应用程序,然后在某个时间点执行后,我需要向该程序的STDIN发送一个字符串(一条命令) 。除了在我手动在Python启动的应用程序的命令窗口中输入一个按钮之前,该命令没有得到处理这一事实之外,这很好。这里是我的代码的一部分:问题在Windows上使用Python的subprocess.communicate()
cmd = 'quit\n'
app.communicate(cmd.encode('utf-8'))
任何想法?
编辑#1
是键入一个按钮是否意味着按键盘,遗憾的混乱上的按键。我已经附加更多的我的代码如下
app = Popen(['runProg.exe', '-m', '20'], stdin=PIPE, universal_newlines=True)
while not os.path.exists('C:/temp/quit-app.tmp'): time.sleep(1)
app.communicate('quit')
os.remove('C:/temp/quit-app.tmp')
那么会发生什么是程序要运行,直到创建戒烟app.tmp文件;一旦创建“退出”应该发送到应用程序,这是一个干净关闭的命令。如果一个人在运行这个程序,他们只需在命令窗口中输入“quit”即可。谢谢!
你能否确认通过“输入按钮”,你的意思是按下一个键(键盘) - 我想是这样,但只是为了避免混淆。这是一个正常的控制台应用程序吗?你的Popen电话是什么样的?也许再多贴一点你的代码,就没有太多的工作要做。 – RedGlyph 2009-10-28 17:54:21