按照此处的解决方案和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。
答案 0 :(得分:0)
不,它没有改变。您的假设是错误的。确保您运行的是正确的代码,或尝试找出可能将其他内容写入终端的内容。因为使用stderr=subprocess.STDOUT
运行子流程会将所有 stderr输出重定向到stdout。