Python是一款操作簡單的編程語言,內(nèi)置豐富的庫,能夠很容易的實現(xiàn)強大的功能,在使用Python進(jìn)行框架搭建時,往往需要用到Python執(zhí)行系統(tǒng)命令,一些開發(fā)人員對此不熟悉,以下是具體的操作方法:
1.os.system()
這個方法直接調(diào)用標(biāo)準(zhǔn)C的system()函數(shù),僅僅在一個子終端運行系統(tǒng)命令,而不能獲取執(zhí)行返回的信息。
>>>importos
>>>output=os.system('cat/proc/cpuinfo')
processor:0
vendor_id:AuthenticAMD
cpufamily:21
......
>>>output#doesn'tcaptureoutput
0
2.os.popen()
這個方法執(zhí)行命令并返回執(zhí)行后的信息對象,是通過一個管道文件將結(jié)果返回。
>>>output=os.popen('cat/proc/cpuinfo')
>>>output
>>>printoutput.read()
processor:0
vendor_id:AuthenticAMD
cpufamily:21
......
>>>
3.commands模塊
>>>importcommands
>>>(status,output)=commands.getstatusoutput('cat/proc/cpuinfo')
>>>printoutput
processor:0
vendor_id:AuthenticAMD
cpufamily:21
......
>>>printstatus
0
注意1:在類unix的系統(tǒng)下使用此方法返回的返回值(status)與腳本或命令執(zhí)行之后的返回值不等,這是因為調(diào)用了os.wait()的緣故,具體原因就得去了解下系統(tǒng)wait()的實現(xiàn)了。需要正確的返回值(status),只需要對返回值進(jìn)行右移8位操作就可以了。
注意2:當(dāng)執(zhí)行命令的參數(shù)或者返回中包含了中文文字,那么建議使用subprocess。
4.subprocess模塊
該模塊是一個功能強大的子進(jìn)程管理模塊,是替換os.system,os.spawn*等方法的一個模塊。
>>>importsubprocess
>>>subprocess.Popen(["ls","-l"])#python2.xdoesn'tcaptureoutput
>>>subprocess.run(["ls","-l"])#python3.xdoesn'tcaptureoutput
>>>total68
drwxrwxr-x3xlxl4096Feb805:00com
drwxr-xr-x2xlxl4096Jan2102:58Desktop
drwxr-xr-x2xlxl4096Jan2102:58Documents
drwxr-xr-x2xlxl4096Jan2107:44Downloads
......
>>>