Python是一款操作簡(jiǎn)單的編程語言,內(nèi)置豐富的庫,能夠很容易的實(shí)現(xiàn)強(qiáng)大的功能,在使用Python進(jìn)行框架搭建時(shí),往往需要用到Python執(zhí)行系統(tǒng)命令,一些開發(fā)人員對(duì)此不熟悉,以下是具體的操作方法:
1.os.system()
這個(gè)方法直接調(diào)用標(biāo)準(zhǔn)C的system()函數(shù),僅僅在一個(gè)子終端運(yùn)行系統(tǒng)命令,而不能獲取執(zhí)行返回的信息。
>>>importos
>>>output=os.system('cat/proc/cpuinfo')
processor:0
vendor_id:AuthenticAMD
cpufamily:21
......
>>>output#doesn'tcaptureoutput
0
2.os.popen()
這個(gè)方法執(zhí)行命令并返回執(zhí)行后的信息對(duì)象,是通過一個(gè)管道文件將結(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í)行之后的返回值不等,這是因?yàn)檎{(diào)用了os.wait()的緣故,具體原因就得去了解下系統(tǒng)wait()的實(shí)現(xiàn)了。需要正確的返回值(status),只需要對(duì)返回值進(jìn)行右移8位操作就可以了。
注意2:當(dāng)執(zhí)行命令的參數(shù)或者返回中包含了中文文字,那么建議使用subprocess。
4.subprocess模塊
該模塊是一個(gè)功能強(qiáng)大的子進(jìn)程管理模塊,是替換os.system,os.spawn*等方法的一個(gè)模塊。
>>>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
......
>>>