【发布时间】:2009-10-28 16:29:55
【问题描述】:
我有一个我试图通过 Python 和 subprocess 模块控制的应用程序。基本上我所做的是使用 Popen 启动应用程序(它打开一个命令提示符,程序在其中执行),然后在稍后执行的某个时间点,我需要向该程序的 STDIN 发送一个字符串(一个命令) .除了在我手动在 Python 已启动的应用程序的命令窗口中键入一个按钮之前,该命令不会得到处理,这很好用。这是我的代码的一部分:
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')
所以应该发生的事情是程序应该运行,直到创建 quit-app.tmp 文件;一旦它被创建,“退出”应该被发送到应用程序,这是一个让它干净地关闭的命令。如果有人在运行这个程序,他们只需在命令窗口中输入“quit”即可。谢谢!
【问题讨论】:
-
您能否确认“键入按钮”是指按一个键(键盘) - 我想是这样,但只是为了避免混淆。这是一个普通的控制台应用程序吗?你的 Popen 电话是什么样的?也许粘贴更多代码,没有太多工作要做。
标签: python subprocess