Я хочу, чтобы мой скрипт на 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.
Я мог бы разобрать объединенный вывод, но это было бы ужасно, и, кроме того, я хочу понять, что здесь происходит.