Python运行命令和捕获结果 - 不要将结果打印到屏幕

时间:2016-03-13 01:56:40

标签: python subprocess

我正在尝试从python脚本运行命令,但我想存储命令生成的输出,然后检查它是否为子字符串,但是它似乎没有存储在我的变量中,因为它仍然打印到屏幕。

到目前为止,我有这个......

myfile = 'filename.txt'
result = subprocess.Popen(['myprogram.exe', '-f' + myfile], stdout=subprocess.PIPE).communicate()[0]
if result.find("error executing") != -1:
     print "error!"
else:
     print "success!"

我对Python很陌生。任何人都可以了解为什么当我运行这个脚本时,myprogram.exe会执行,但它的输出仍然会被发送到屏幕。如果我打印结果变量,它有来自myprogram.exe的额外输出,但我也需要显示错误的行。

1 个答案:

答案 0 :(得分:2)

你只是重定向stdout。看起来您的程序会将错误输出到stderr(如预期的那样),并将stderr=subprocess.PIPE添加到Popen调用。