Подпроцесс Python в Windows: вывод stderr в stdout (но не при запуске команды в cmd.exe) - PullRequest
0 голосов
/ 02 мая 2018

Я хочу, чтобы мой скрипт на Python обработал результат инструмента sigcheck.exe. Следующая команда при запуске в cmd.exe распечатывает баннер (кажется, это вывод stderr) и записывает вывод stdout в файл csv:

sigcheck64 -c c:\tmp\unsigned.exe > csv_output.csv

Это отображает вывод stdout и записывает stderr (заголовок) в файл: sigcheck64 -c c: \ tmp \ unsigned.exe 2> csv_output.csv

Однако, если я попытаюсь сделать это в python, оба вывода stdout и stderr будут в stdout.

import subprocess
p = subprocess.Popen(["sigcheck64.exe","-c", c:\tmp\unsigned.exe"], 
                      shell=True,
                      stdout=subprocess.PIPE,
                      stderr=subprocess.PIPE)

o,e = p.communicate()
print("stdout: %s" % o)
print("stderr: %s" % e)

Я не смог найти способ отдельно получить вывод stdout. Я попробовал другую функцию подпроцесса и попытался перенаправить stderr на devnull.

Я мог бы разобрать объединенный вывод, но это было бы ужасно, и, кроме того, я хочу понять, что здесь происходит.

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