Python中執行系統命令常見的幾種方法

deeply發表於2021-09-09


 

Python中執行系統命令常見的幾種方法:  

 

(1)os.system  

 

# 僅僅在一個子終端執行系統命令,而不能獲取命令執行後的返回資訊  

# 如果再命令列下執行,結果直接列印出來  

例如:  

>>> import os  

>>> os.system('ls')  

chk_err_log.py CmdTool.log  install_log.txt  install_zabbix.sh  manage_deploy.sh  MegaSAS.log  

 

(2)os.popen  

 

#該方法不但執行命令還返回執行後的資訊物件  

#好處在於:將返回的結果賦於一變數,便於程式的處理。  

例如:  

>>> import os  

>>>tmp = os.popen('ls *.sh').readlines()  

>>>tmp  

['install_zabbix.shn', 'manage_deploy.shn', 'mysql_setup.shn', 'python_manage_deploy.shn', 'setup.shn']  

 

(3)使用模組subprocess  

使用方法:  

>>> import subprocess  

>>> subprocess.call (["cmd", "arg1", "arg2"],shell=True)  

好處在於:運用對執行緒的控制和監控,將返回的結果賦於一變數,便於程式的處理。  

如獲取返回和輸出:  

 

import subprocess  

p = subprocess.Popen('ls *.sh', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)  

print p.stdout.readlines()  

for line in p.stdout.readlines():  

    print line,  

retval = p.wait()  

 

(4)  使用模組commands模組  

常用的主要有兩個方法:getoutput和getstatusoutput  

>>> import commands  

 

>>> commands.getoutput('ls *.sh')  

'install_zabbix.shnmanage_deploy.shnmysql_setup.shnpython_manage_deploy.shnsetup.sh' 

 

>>> commands.getstatusoutput('ls *.sh')  

(0, 'install_zabbix.shnmanage_deploy.shnmysql_setup.shnpython_manage_deploy.shnsetup.sh')  

 

注意: 當執行命令的引數或者返回中包含了中文文字,那麼建議使用subprocess,如果使用os.popen則會出現錯誤。  

 

©著作權歸作者所有:來自51CTO部落格作者AIOPS_DBA的原創作品,如需轉載,請註明出處,否則將追究法律責任

s


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1978/viewspace-2820311/,如需轉載,請註明出處,否則將追究法律責任。

相關文章