我希望我的python脚本处理 sigcheck.exe 工具的结果 . 以下命令在 cmd.exe 中运行时打印出一个 Banner (这似乎是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 .

我可以解析合并的输出,但这很难看,而且,我想了解这里发生了什么 .