我在Windows Server 2008 R2 x64機箱上使用Python 2.7.1
。Python:從命令行獲取輸出,該命令行以非零退出代碼退出
我想獲得輸出我需要的信息後給出非零退出狀態的命令行進程的輸出。
我最初使用的是subprocess.check_output
,並捕獲了非零退出狀態下發生的CalledProcessError,但是當返回代碼存儲在錯誤中時,沒有輸出顯示這一點。
運行這種情況下,給出輸出,但退出狀態爲0正常工作,我可以得到輸出使用subprocess.check_output。
我的假設是輸出被寫入STDOUT,但異常從STDERR中提取其'輸出'。我試着重新實現check_output的功能,但是當我相信我應該看到輸出到STDOUT和STDERR時,輸出仍然沒有任何結果。我當前的代碼如下(其中「命令」是全文,包括參數,命令我運行:
process = subprocess.Popen(command, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, universal_newlines=True)
output = process.communicate()
retcode = process.poll()
if retcode:
raise subprocess.CalledProcessError(retcode, image_check, output=output)
return output
這使我在可變輸出如下:
是我subprocess.Popen
代碼糾正?
``.communicate()`之後,你可以直接使用`process.returncode`而不是`process.poll()`。 – jfs 2013-08-20 10:48:15
如何從Python的命令行獲得輸出:http://stackoverflow.com/a/20456745/445131 – 2013-12-08 17:53:29