在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
Python常用模組之五 subprocess
python引入subprocess模組來管理子程序,以取代一些舊模組的方法 如 os.system os.spawn os.popen popen2.commands.不但可以呼叫外部的命令作為子程序,而且可以連線到子程序的input output error管道,獲取相關的返回資訊。subpro...
python的包 python的包
1.把解決一類問題的模組放在同乙個資料夾裡,這個資料夾就是包 2.通過import或是from.import匯入時必須遵循乙個原則 a 凡是在匯入時帶點的,點的左邊都必須是乙個包,否則非法 b 匯入後,使用時點的左邊可以是包,模組,類,函式 它們都可以用點的方式調節用自己的屬性 c from.imp...
python 閉包 python 閉包
閉包 因為python中函式也可以當作物件,所以如果出現當我們返回乙個函式,而該函式含有外部變數的時候就形成了閉包。閉包的特點 是個巢狀函式 可以獲得非區域性的變數 將函式當作物件返回 看乙個例子會更易理解 def make printer msg msg hi there def printer ...