我有一個python腳本,通過幾次檢查。其中一項檢查是通過對關鍵字執行grep並確認沒有輸出來確保結果不包含關鍵字。讀取grep手冊頁的預期退出代碼是1.但從用戶角度來看,由於關鍵字不存在,所以通過檢查。有沒有辦法,我可以返回退出狀態0的grep與沒有匹配命令,所以它不被視爲異常或任何其他方式來處理它作爲異常處理?注意用戶將創建命令文件,所以我無法完全避免使用grep。Python supress grep不匹配退出狀態
import subprocess
def cmd_test(command):
try:
cmd_output = subprocess.check_output(command,
stderr=subprocess.STDOUT,
shell=True,
timeout=120,
universal_newlines=False).decode('utf-8')
except subprocess.CalledProcessError as exc:
return (exc)
else:
return cmd_output.strip()
print(cmd_test('env | grep bash'))
print(cmd_test('env | grep test'))
print(cmd_test('env | grep bash'))
print(cmd_test('env | grep test'))
輸出:
的grepSHELL=/bin/bash
Command 'env | grep test' returned non-zero exit status 1 b''
錯誤...只需檢查異常對象中的退出代碼?甚至直接使用'Popen'對象而不是'check_foo()' – o11c