python 呼叫系統命令

2022-08-22 12:30:12 字數 3883 閱讀 4452

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

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

例如:

>>> import os   

>>> os.system('ls')

輸出結果:

chk_err_log.py cmdtool.log  install_log.txt  install_zabbix.sh  manage_deploy.sh  megasas.log

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

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

例如:

>>> import os   

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

>>>tmp

輸出結果:

['install_zabbix.sh\n', 'manage_deploy.sh\n', 'mysql_setup.sh\n', 'python_manage_deploy.sh\n', 'setup.sh\n']

subprocess是乙個功能強大的子程序管理模組,是替換os.system ,os.spawn* 等方法的乙個模組。

使用方法:

>>> 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()

方法                       說明

getoutput               獲取執行命令後的返回資訊

getstatus               獲取執行命令的狀態值(執行命令成功返回數值0,否則返回非0)

getstatusoutput     獲取執行命令的狀態值以及返回資訊

>>> import commands

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

輸出結果:

'install_zabbix.sh\nmanage_deploy.sh\nmysql_setup.sh\npython_manage_deploy.sh\nsetup.sh'

>>> commands.getstatusoutput('ls *.sh')
輸出結果:

(0, 'install_zabbix.sh\nmanage_deploy.sh\nmysql_setup.sh\npython_manage_deploy.sh\nsetup.sh')

import commands

(status, output) = commands.getstatusoutput('cat /proc/cpuinfo')

print status,output

注意1:在類unix的系統下使用此方法返回的返回值(status)與指令碼或命令執行之後的返回值不等,這是因為呼叫了os.wait()的緣故,具體原因就得去了解下系統wait()的實現了。需要正確的返回值(status),只需要對返回值進行右移8位操作就可以了。

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

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

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

例如:

>>> import os   

>>> os.system('ls')

輸出結果:

chk_err_log.py cmdtool.log  install_log.txt  install_zabbix.sh  manage_deploy.sh  megasas.log

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

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

例如:

>>> import os   

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

>>>tmp

輸出結果:

['install_zabbix.sh\n', 'manage_deploy.sh\n', 'mysql_setup.sh\n', 'python_manage_deploy.sh\n', 'setup.sh\n']

subprocess是乙個功能強大的子程序管理模組,是替換os.system ,os.spawn* 等方法的乙個模組。

使用方法:

>>> 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()

方法                       說明

getoutput               獲取執行命令後的返回資訊

getstatus               獲取執行命令的狀態值(執行命令成功返回數值0,否則返回非0)

getstatusoutput     獲取執行命令的狀態值以及返回資訊

>>> import commands

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

輸出結果:

'install_zabbix.sh\nmanage_deploy.sh\nmysql_setup.sh\npython_manage_deploy.sh\nsetup.sh'

>>> commands.getstatusoutput('ls *.sh')
輸出結果:

(0, 'install_zabbix.sh\nmanage_deploy.sh\nmysql_setup.sh\npython_manage_deploy.sh\nsetup.sh')

import commands

(status, output) = commands.getstatusoutput('cat /proc/cpuinfo')

print status,output

注意1:在類unix的系統下使用此方法返回的返回值(status)與指令碼或命令執行之後的返回值不等,這是因為呼叫了os.wait()的緣故,具體原因就得去了解下系統wait()的實現了。需要正確的返回值(status),只需要對返回值進行右移8位操作就可以了。

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

python 呼叫系統命令

使用 os.system 呼叫系統命令 程式中無法獲得到輸出和返回值 import os os.system ls l proc cpuinfo os.system ls l proc cpuinfo r r r 1 root root 0 3月 29 16 53 proc cpuinfo 0使用 ...

python呼叫系統命令

1.os.system 例如 os.system ls 如果在命令列下執行,結果直接列印出來 裡面的引數即為dos命令。這樣的話是不能將得到的東西顯示出來的。但是如果是執行一些其他的操作dos操作的話應該可以實現的。2.為了能夠得到返回的結果集可以這樣來處理的 os.popen popen comm...

python 呼叫系統命令os

一 獲取環境變數 import os env dist os.environ 列印所有環境變數,遍歷字典 for key in env dist print key env dist key 二 os.system cmd 與os.popen cmd 的區別 os.system cmd 返回結果為0...