Запустите приложение / скрипт командной строки из Python, перехватите вывод и отправьте ввод - PullRequest
1 голос
/ 05 апреля 2019

Я пытался запустить некоторые приложения с аргументами в командной строке Windows, но в скрипте Python. У меня возникают проблемы с пониманием модуля подпроцесса и с тем, как я могу использовать его для отправки входных данных, захвата выходных данных и использования данных в будущих функциях или циклах.

Возьмем, к примеру, командную строку инструментария управления Windows:

Я хотел бы запустить командную строку из скрипта 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

В то же время я хотел бы, чтобы вывод выводился в открытой командной строке.

Буду признателен за любую помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...