1
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”模块文档并尝试了几种方法(.call、.terminate、.kill)之后,我没有成功

编辑:

操作..

p.send_signal('q')

..似乎是我想做的。但是,“q”在解释器中引发了 ValueError。

4

2 回答 2

1

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

import time
import subprocess
p = subprocess.Popen(r"your.bat", stdin=subprocess.PIPE)
time.sleep(30)
p.stdin.write("q")
于 2013-04-18T21:35:03.123 回答
0

如果我理解正确,您想将参数传递给您的批处理文件。只需向 Popen 提供一个列表

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

如果您想在进程运行时与其进行通信,那么您需要查看这篇文章

于 2013-04-18T21:00:23.663 回答