subprocess模块

从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system、os.spawn*、os.popen*、popen2.*、commands.*不但可以调用外部的命令作为子进程,而且可以连接到子进程的input/output/error管道,获取相关的返回信息。

常用subprocess方法示例:

#执行命令,返回执行状态,0或非0

>>> res = subprocess.call(["df","-h"])
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        48G   30G   18G  64% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
/dev/sda3        91G   29G   58G  33% /data
/dev/sdb        1.8T  696G  1.1T  40% /wdc
>>> res
0
#接收字符串命令,返回元组形式,第一个元素是执行状态,第二个是执行结果

>>> subprocess.getstatusoutput('ls /home/zww/day5')
(0, 'decorator2.py\ndecorator3.py\ndecorator4.py\ndecorator.py\nflag\nget_log\nuser_table')
#接收字符串格式命令,并返回结果

>>> subprocess.getoutput('ls /home/zww/day5')
'decorator2.py\ndecorator3.py\ndecorator4.py\ndecorator.py\nflag\nget_log\nuser_table'

#执行命令,并返回结果,注意是返回结果,不是打印,下例结果返回给res

>>> res = subprocess.check_output(['df','-h'])
>>> res
b'Filesystem      Size  Used Avail Use% Mounted on\n/dev/sda1        48G   30G   18G  64% /\ntmpfs           1.9G     0  1.9G   0% /dev/shm\n/dev/sda3        91G   29G   58G  33% /data\n/dev/sdb        1.8T  696G  1.1T  40% /wdc\n'

#上面那些方法,底层都是封装的subprocess.Popen
poll()
Check if child process has terminated. Returns returncode

wait()
Wait for child process to terminate. Returns returncode attribute.


terminate() 杀掉所启动进程
communicate() 等待任务结束

stdin 标准输入

stdout 标准输出

stderr 标准错误

pid
The process ID of the child process.

#例子
>>> p = subprocess.Popen("df -h",stdin=subprocess.PIPE,stdout=subprocess.PIPE,shell=True)
>>> p.stdout.read()
b'Filesystem      Size  Used Avail Use% Mounted on\n/dev/sda1        48G   30G   18G  64% /\ntmpfs           1.9G     0  1.9G   0% /dev/shm\n/dev/sda3        91G   29G   58G  33% /data\n/dev/sdb        1.8T  696G  1.1T  40% /wdc\n'
>>>


 

 

转载于:https://www.cnblogs.com/wenwei-blog/p/7606578.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值