Python:如何运行外部的linux/unix命令/程序
April 25, 2014
当我们在写python程序的时候,有时候需要调用现成的外部命令或者已经编译好的外部程序, 那么在python里如何调用呢?
下面来介绍一个python的模块:subprocess. 这个模块可以创建一个新的进程,并可以获取到该进程的标准输入/输出以及标准的错误输出, 而且可以该进程最后的返回值。当然python里还有其它的模块可以实现这种需求,比如:os.system, os.spawn*, os.popen*.
python subprocess模块的用法
import subprocess subprocess.call("命令“) subprocess.call(["命令”,“参数”])
python程序中执行ifconfig命令去获取系统网卡的信息
#!/usr/bin/python import subprocess subprocess.call("ifconfig")
程序执行后输出如下:
eth0 Link encap:Ethernet HWaddr inet addr:10.10.10.200 Bcast:10.10.10.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:62621520 errors:0 dropped:0 overruns:0 frame:0 TX packets:43688 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2787090014 (2.5 GiB) TX bytes:1835004 (1.7 MiB) Interrupt:164
python程序调用netstat -l命令查看正在监听的端口
#!/usr/bin/python import subprocess subprocess.call(["netstat","-l"])
程序执行后输出如下:
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:mysql *:* LISTEN tcp 0 0 *:http *:* LISTEN tcp 0 0 *:ftp *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 *:ssh *:* LISTEN
如何将外部命令的输出传给python的一个变量呢?我们可以使用subprocess中的Popen类来实现
#!/usr/bin/python import subprocess Temp=subprocess.Popen(["netstat","-l"], stdout=subprocess.PIPE, shell=True) (output,errput)=Temp.communicate() return_value=Temp.wait() print "命令输出:“,output print "命令退出状态:“, return_value
0 Comments