python27从.bat&开放程序关闭.exe

时间:2013-04-18 20:50:31

标签: python subprocess

p = subprocess.Popen("path to batch file")
time.sleep(30)
#do something to terminate the .exe process

我正在使用Popen来运行批处理文件。关联的程序.exe打开&在cmd终端中运行。通过在终端中手动输入'q'参数,可以(很好地)终止程序。

我想使用上面的python27脚本将'q'字符串传递给终端,以便程序识别其本机终止信号并关闭。阅读“os”& “subprocess”模块docs&尝试了几种方法(.call,.terminate,.kill)我没有成功

编辑:

操作..

p.send_signal('q')

..似乎是我想要做的。但是,'q'在解释器中引发了一个ValueError。

2 个答案:

答案 0 :(得分:1)

我认为您需要做的是在创建子流程时指定标准输入,然后调用其write方法:

import time
import subprocess
p = subprocess.Popen(r"your.bat", stdin=subprocess.PIPE)
time.sleep(30)
p.stdin.write("q")

答案 1 :(得分:0)

如果我理解正确,您希望将参数传递给批处理文件。只需提供list to Popen

p = subprocess.Popen(['path to batch file', 'arg_1', 'arg_2', etc...])

如果您希望在流程运行时与流程进行通信,则需要检查此post