从Python内部启动命令提示符应用程序/脚本,捕获输出并发送输入

时间:2019-04-05 08:32:11

标签: python windows python-2.7 subprocess command-prompt

我一直试图在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

同时,我希望在打开的命令提示符中打印输出。

我将不胜感激。

0 个答案:

没有答案