Python 包subprocess測試
subprocess模塊記錄
在Python3 中官方建議使用subprocess代替舊的os 和 command 包。
之前一直在用subprocess.Popen 來執行shell命令,但這個命令很複雜。
這次在複習的過程中,看到說subprocess 中的call/check_call/getstatusoutput等方法是對Popen的封裝。
實際測試比Popen方便很多。
測試結果
這是在Python 3.6.5 的測試結果
命令 | 返回結果 | 是否拋出異常 | 是否有shell參數 | 建議 |
---|---|---|---|---|
run | CompletedProcess | 否 | 是 | 否 |
call | 狀態 | 否 | 是 | 是 |
check_call | 狀態 | 是 | 是 | 是 |
getstatusoutput | (狀態, 結果) | 否 | 否 | 是 |
getoutput | 結果 | 否 | 否 | 否 |
check_output | b’結果’ | 是 | 是 | 否 |
上述返回結果只有狀態,則表示shell執行的內容直接打印輸出到屏幕中,不會以返回值的形式傳遞。
Python 3.7 中對 run 做了優化,官方建議: You can now use run() in many cases, but lots of existing code calls these functions
本測試結果不適用Python 3.7