python获取命令行输出结果,并对结果进行过滤找到自己需要的!

这里以获取本机MAC地址和IP地址为例!

# coding: GB2312  
import os, re  

# execute command, and return the output  
def execCmd(cmd):  
    r = os.popen(cmd)  
    text = r.read()  
    r.close()  
    return text  

# write "data" to file-filename  
def writeFile(filename, data):  
    f = open(filename, "w")  
    f.write(data)  
    f.close()  

# 获取计算机MAC地址和IP地址  
if __name__ == '__main__':  
    cmd = "ipconfig /all"  
    result = execCmd(cmd)  
    pat1 = "Physical Address[\. ]+: ([\w-]+)"  
    pat2 = "IP Address[\. ]+: ([\.\d]+)"  
    MAC = re.findall(pat1, result)[0]       # 找到MAC  
    IP = re.findall(pat2, result)[0]        # 找到IP  
    print("MAC=%s, IP=%s" %(MAC, IP))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

运行结果:

E:\Program\Python>del.py  
MAC=00-1B-77-CD-62-2B, IP=192.168.1.110  

E:\Program\Python>
  • 1
  • 2
  • 3
  • 4

python执行系统命令后获取返回值的几种方式

第一种情况

os.system('ps aux')
  • 1

执行系统命令,没有返回值 
第二种情况

result = os.popen('ps aux')  
      res = result.read()  
      for line in res.splitlines():  
              print line
  • 1
  • 2
  • 3
  • 4

执行系统命令,可以获取执行系统命令的结果

p = subprocess.Popen('ps aux',shell=True,stdout=subprocess.PIPE)  
   out,err = p.communicate()  
   for line in out.splitlines():  
       print line
  • 1
  • 2
  • 3
  • 4

同上,执行系统命令,可以获取执行系统命令的结果 
第三种情况

output = commands.getstatusoutput('ps aux')  
print  output
  • 1
  • 2

执行系统命令,并获取当前函数的返回值