python-task1-执行shell命令

本文详细介绍了Python中执行Shell命令的多种方式,包括os模块的system和popen方法,commands模块的getstatusoutput、getoutput和getstatus方法,以及subprocess模块的run、call和check_call函数。这些方法各有适用场景,如获取命令输出、处理复杂shell语句等,对于需要在Python程序中调用系统命令的开发者非常实用。
摘要由CSDN通过智能技术生成

python执行shell命令

1.使用os模块的system方法:os.system(cmd)

其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未找到,该方法适用于shell命令不需要输出内容的场景。

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

2.使用os模块的popen()方法:os.popen()

该方法以文件的形式返回shell指令运行后的结果,需要获取内容时可使用read()或readlines()方法

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

3.commands模块

使用commands模块,有三个方法可以使用:

(1)commands.getstatusoutput(cmd),其以字符串的形式返回的是输出结果和状态码,即(status,output)。

(2)commands.getoutput(cmd),返回cmd的输出结果。

(3)commands.getstatus(file),返回ls -l file的执行结果字符串,调用了getoutput,不建议使用此方法

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

3.subprocess模块

允许创建很多子进程,创建的时候能指定子进程和子进程的输入、输出、错误输出管道,执行后能获取输出结果和执行状态。

(1)subprocess.run():python3.5中新增的函数, 执行指定的命令, 等待命令执行完成后返回一个包含执行结果的CompletedProcess类的实例。

(2)subprocess.call():执行指定的命令, 返回命令执行状态, 功能类似os.system(cmd)。

(3)subprocess.check_call():python2.5中新增的函数, 执行指定的命令, 如果执行成功则返回状态码, 否则抛出异常。

说明:subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False, universal_newlines=False)

subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None)

subprocess.check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None)

args:表示shell指令,若以字符串形式给出shell指令,如"ls -l “则需要使shell = Ture。否则默认已数组形式表示shell变量,如"ls”,"-l"。

当使用比较复杂的shell语句时,可以先使用shlex模块的shlex.split()方法来帮助格式化命令,然后在传递给run()方法或Popen。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值