python subprocess.Popen行为是否已更改为始终打印stderr?

时间:2018-07-02 17:53:45

标签: python

按照此处的解决方案和python手册的以下代码段,不得在屏幕上打印任何内容,包括cmd的stderr。

p = subprocess.Popen(cmd, cwd=tmpdir, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
o, e = p.communicate()

但是不知何故,我在终端上收到了cmd的错误消息。行为改变了吗?我尝试了以下变体,它也具有相同的结果:

p = subprocess.Popen(cmd, cwd=tmpdir, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
o, e = p.communicate()

我在CentO 7上具有Python 2.7.5。

1 个答案:

答案 0 :(得分:0)

不,它没有改变。您的假设是错误的。确保您运行的是正确的代码,或尝试找出可能将其他内容写入终端的内容。因为使用stderr=subprocess.STDOUT运行子流程会将所有 stderr输出重定向到stdout。