Python调用命令行的几种方法

来源:互联网 发布:网络教育报名流程 编辑:程序博客网 时间:2024/06/05 00:46

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'
0 0