命令框架,以確定是否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