命令框架,以确定是否Xcode是在Mac上运行:cmd = "ps -ax | grep -v grep | grep Xcode"
蟒蛇check_output失败,退出状态1,但POPEN适用于相同的命令
如果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正在运行,Command与两种方法都能很好地协作。
无论如何,你在Python本身执行'grep'处理要好得多。 – tripleee 2015-02-23 14:58:18
即使我在python中处理输出,我也必须使用'subprocess'模块。所以我认为这是在'bash'结束所有工作的好方法。 – Deepak 2015-02-23 15:18:22
相关:[在Python中通过名称杀死进程](http://stackoverflow.com/q/2940858/4279) – jfs 2015-02-24 07:12:50