1、os.system()
接收字符串形式的系统命令并执行它。
当执行命令时,Python的运行是挂起的。当我们执行完成之后,将会以system()的返回值形式给出退出状态,Python的执行就会继续。退出状态,0表示成功,非0表示其他类型的错误。
所以,这个函数是无法直接获取输出的。
2、os.popen()
它的工作方式和os.system()是一样的,但是它会返回一个类文件对象。通过read()可以读取命令产生的结果。
3、subprocess.call()
用法、结果和os.system()完全一样
4、subprocess.Popen()
该函数使用取代os.popen(),但创建Popen()实例的语法比调用os.popen()更复杂一些。
>>> f = Popen('arp -a',stdin = PIPE, stdout = PIPE)
>>> f.stdout.read() # 获取输出,如果命令需要一定时间才能运行完,那么会运行完后再获取输出
'\r\n\xbd\xd3\xbf\xda: 192.168.1.103 --- 0x9\r\n Internet \xb5\xd8\xd6\xb7 \xce\xef\xc0\xed\xb5\xd8\xd6\xb7 \xc0\xe0\xd0\xcd\r\n 192.168.1.1 50-bd-5f-ec-2b-f8 \xb6\xaf\xcc\xac \r\n 192.168.1.100 c8-0e-77-7c-e9-9a \xb6\xaf\xcc\xac \r\n 224.0.0.22 01-00-5e-00-00-16 \xbe\xb2\xcc\xac \r\n 224.0.0.252 01-00-5e-00-00-fc \xbe\xb2\xcc\xac \r\n 224.0.0.253 01-00-5e-00-00-fd \xbe\xb2\xcc\xac \r\n 239.255.255.250 01-00-5e-7f-ff-fa \xbe\xb2\xcc\xac \r\n 255.255.255.255 ff-ff-ff-ff-ff-ff \xbe\xb2\xcc\xac \r\n'