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。
答案 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。