Python調(diào)用系統(tǒng)命令的6種方法
在Python中調(diào)用系統(tǒng)命令一般使用os或者subprocess模塊,下面介紹Python中最常用的6種調(diào)用系統(tǒng)命令的方法。
1、os.system()
該函數(shù)返回命令執(zhí)行結(jié)果的返回值,system()函數(shù)在執(zhí)行過(guò)程中進(jìn)行了以下三步操作:
1、fork一個(gè)子進(jìn)程;
2、在子進(jìn)程中調(diào)用exec函數(shù)去執(zhí)行命令;
3、在父進(jìn)程中調(diào)用wait(阻塞)去等待子進(jìn)程結(jié)束。
返回0表示命令執(zhí)行成功,其他表示失敗。
用法:
os.system("command")
2、os.popen()
這種調(diào)用方式是通過(guò)管道的方式來(lái)實(shí)現(xiàn),函數(shù)返回是 file read 的對(duì)象,對(duì)其進(jìn)行讀取read、readlines等操作可以看到執(zhí)行的輸出。
用法:
os.popen("command")
3、subprocess.Popen()
subprocess模塊被推薦用來(lái)替換一些老的模塊和函數(shù),如:os.system、os.spawn、os.popen等
subprocess模塊目的是fork一個(gè)新的進(jìn)程并與之通信,最常用是定義類Popen,使用Popen可以創(chuàng)建進(jìn)程,并與進(jìn)程進(jìn)行復(fù)雜的交互。
用法:
child = subprocess.Popen(["cmd","arg1"...])
4、subprocess.call()
執(zhí)行指定的命令,返回命令執(zhí)行狀態(tài),其功能類似于os.system(cmd)。
用法:
subprocess.call("command")
5、subprocess.run()
Python 3.5中新增的函數(shù),執(zhí)行指定的命令,等待命令執(zhí)行完成后返回一個(gè)包含執(zhí)行結(jié)果的CompletedProcess類的實(shí)例。
用法:
subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False, universal_newlines=False)
6、subprocess.getstatusoutput()
執(zhí)行cmd命令,返回一個(gè)元組(命令執(zhí)行狀態(tài),命令執(zhí)行結(jié)果輸出),其功能類似于commands.getstatusoutput()。
用法:
subprocess.getstatusoutput("command")
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了惠水免費(fèi)建站歡迎大家使用!