Python subprocess模块功能与常见用法实例详解

本文实例讲述了Python subprocess模块功能与常见用法。分享给大家供大家参考,具体如下:

一、简介

subprocess最早在2.4版本引入。用来生成子进程,并可以通过管道连接他们的输入/输出/错误,以及获得他们的返回值。

subprocess用来替换多个旧模块和函数:

  • os.system
  • os.spawn*
  • os.popen*
  • popen2.*
  • commands.*

运行python的时候,我们都是在创建并运行一个进程,linux中一个进程可以fork一个子进程,并让这个子进程exec另外一个程序。在python中,我们通过标准库中的subprocess包来fork一个子进程,并且运行一个外部的程序。subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所欲我们可以根据需要来从中选取一个使用。另外subprocess还提供了一些管理标准流(standard stream)和管道(pipe)的工具,从而在进程间使用文本通信。

二、旧有模块的使用

1. os.system()

import os
# 0 表示执行成功
a = os.system("df -Th")
# 返回非 0 表示执行错误
os.system("list")

2. os.popen()

执行操作系统的命令,会将结果保存在内存当中,可以用 read() 方法读取出来.

import os
# <open file 'ls -l', mode 'r' at 0x7f02d249c390>
res = os.popen("ls -l")
print( res.read())

三、subprocess模块

1、subprocess.run()

import subprocess
# python 解析则传入命令的每个参数的列表
subprocess.run(["df","-h"])
#需要交给Linux shell自己解析,则:传入命令字符串,shell=True
subprocess.run("df -h|grep /dev/sda1",shell=True)

2、subprocess.call()

执行命令,返回命令的结果和执行状态,0或者非0

# 命令执行状态
res = subprocess.call(["ls","-l"])

3、subprocess.check_call()

执行命令,返回结果和状态,正常为0 ,执行错误则抛出异常

subprocess.check_call(["ls","-l"])

4、subprocess.getstatusoutput()

接受字符串形式的命令,返回 一个元组形式的结果,第一个元素是命令执行状态,第二个为执行结果

#执行正确
subprocess.getstatusoutput('pwd')
(0, '/root')

#执行错误
subprocess.getstatusoutput('pd')
(127, '/bin/sh: pd: command not found')

5、subprocess.getoutput()

接受字符串形式的命令,放回执行结果

subprocess.getoutput('pwd')
'/root'

6、subprocess.check_output()

执行命令,返回执行的结果,而不是打印

>>> res = subprocess.check_output("pwd")
>>> res
b'/root\n'
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值