Windows上的Python子进程:stdout中的stderr输出(但如果我在cmd.exe中运行该命令则不行)

时间:2018-05-02 13:31:43

标签: windows python-2.7 cmd subprocess

我希望我的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。

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

0 个答案:

没有答案