我一直试图在Windows命令提示符下但在Python脚本中运行带有参数的某些应用程序。我在理解子流程模块以及如何使用它来发送输入,捕获输出以及在将来的函数或循环中使用数据时遇到问题。
以Windows Management Instrumentation命令行为例:
我想从Python脚本启动命令提示符,启动wmic,做一些事情,然后退回到命令提示符。
我知道如何对cmd甚至wmic进行分层:
import subprocess
cmd = subprocess.Popen(["cmd", "/K", "wmic"])
我不知道如何向wmic发送命令。我尝试了以下方法:
import subprocess
cmd = subprocess.Popen(["cmd", "/K", "wmic"],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdoutdata, stderrdata = cmd.communicate(input="product get name")
或
cmd.stdin.write("product get name")
cmd.stdin.flush()
不起作用。在此示例中,我想要的是启动命令提示符,启动WMIC,发送命令(产品/过程获得名称),捕获WMIC的输出并使用它来执行以下操作:
for line in cmd.stdout:
if line == "some string":
do this or do that
同时,我希望在打开的命令提示符中打印输出。
我将不胜感激。