python-task12-subprocess模块

Python的subprocess模块用于在新的进程中执行系统命令,它提供了统一的接口来管理和控制子进程。相比os.system、os.popen等,subprocess更加强大且易于使用。主要方法有run、call和Popen,其中run是官方推荐的接口。例如,使用subprocess.run可以执行'df -h'并捕获输出,而shell=True参数可以让命令直接由系统shell执行,如'df -h | grep disk1'。此外,os模块的system和popen函数也可执行系统命令,但subprocess模块提供了更规范的调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

subprocess模块

模块的作用

1.运行python的时候,我们都是在创建并运行一个进程,linux中一个进程可以fork一个子进程,并让这个子进程exec另外一个程序。

2.需要通过python去执行一条系统命令或者脚本,系统的shell命令是独立于你的python进程之外的,每执行一条命令,就是发起一个新进程。

其他类似于功能的模块

os.systrm

os.command

os.popen

也可以调用系统命令,比较乱,于是推出subprocess,提供统一的模块来实现对系统命令或脚本的调用

三种执行命令的方法
  • subprocess.run(*popenargs, input=None, timeout=None, check=False, **kwargs) #官方推荐

  • subprocess.call(*popenargs, timeout=None, **kwargs) #跟上面实现的内容差不多,另一种写法

  • subprocess.Popen() #上面各种方法的底层封装

subprocess实际例子

subprocess.run(['df','-h'],stderr=subprocess.PIPE,stdout=subprocess.PIPE,check=True)
涉及到管道|的命令需要这样子写:
subprocess.run('df -h|grep disk1',shell=True) #shell=True的意思是这条命令直接交给系统去执行,不需要python负责解析

os实际例子

1.os.systrm():执行操作系统的命令,将结果输出到屏幕,只返回命令执行状态(0:成功,非0:失败)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iDJStw12-1647481476244)(图片/image-20211015150354902.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xcwVAyZ0-1647481476246)(图片/image-20211015150502461.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值