【发布时间】:2015-04-24 20:33:32
【问题描述】:
用于识别 Xcode 是否在 Mac 上运行的命令框架:cmd = "ps -ax | grep -v grep | grep Xcode"
如果 Xcode 没有运行,那么上面的命令适用于 subprocess 模块的 Popen 方法,但使用 check_output 方法引发 CalledProcessError。我试图通过以下代码检查stderr,但未能获得适当的信息来理解原因。
from subprocess import check_output, STDOUT, CalledProcessError
psCmd = "ps -ax | grep -v grep | grep Xcode"
o = None
try:
o = check_output(psCmd, stderr=STDOUT, shell=True)
except CalledProcessError as ex:
print 'Error:', ex, o
异常信息如下:
Error: Command 'ps -ax | grep -v grep | grep Xcode' returned non-zero exit status 1 None
问题:为什么上面的命令对 Popen 有效,但由于 check_output 失败?
注意:如果 Xcode 正在运行,命令对这两种方法都适用。
【问题讨论】:
-
无论如何,在 Python 中进行
grep处理会好得多。 -
即使我在python中处理输出,我也必须使用
subprocess模块。所以我认为这是在bashend 完成所有工作的好方法。
标签: python subprocess popen