python中执行shell linux 命令

这里介绍一下python执行shell命令的四种方法:
1、os模块中的os.system()这个函数来执行shell命令

Python
>>> <span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/os" title="View all posts in os" target="_blank">os</a></span>.system('ls') anaconda-ks.cfg install.log install.log.syslog send_sms_service.py sms.py 0 注,这个方法得不到shell命令的输出。
1
2
3
4
>>> os . system ( 'ls' )
anaconda - ks . cfg   install . log   install . log . syslog    send_sms_service . py   sms . py
0
注,这个方法得不到 shell命令的输出。

2、popen()#这个方法能得到命令执行后的结果是一个字符串,要自行处理才能得到想要的信息。

Python
>>> import os >>> str = os.<span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/popen" title="View all posts in popen" target="_blank">popen</a></span>("ls").read() >>> a = str.split("\n") >>> for b in a: print b
1
2
3
4
5
>>> import os
>>> str = os . popen ( "ls" ) . read ( )
>>> a = str . split ( "\n" )
>>> for b in a :
         print b

这样得到的结果与第一个方法是一样的。
3、commands模块#可以很方便的取得命令的输出(包括标准和错误输出)和执行状态位

Python
import <span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/commands" title="View all posts in commands" target="_blank">commands</a></span> a,b = <span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/commands" title="View all posts in commands" target="_blank">commands</a></span>.getstatusoutput('ls') a是退出状态 b是输出的结果。 >>> import commands >>> a,b = commands.getstatusoutput('ls') >>> print a 0 >>> print b anaconda-ks.cfg install.log install.log.syslog commands.getstatusoutput(cmd)返回(status,output) commands.getoutput(cmd)只返回输出结果 commands.getstatus(file)返回ls -ld file 的执行结果字符串,调用了getoutput,不建议使用这个方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import commands
a , b = commands . getstatusoutput ( 'ls' )
a是退出状态
b是输出的结果。
>>> import commands
>>> a , b = commands . getstatusoutput ( 'ls' )
>>> print a
0
>>> print b
anaconda - ks . cfg
install . log
install . log . syslog
commands . getstatusoutput ( cmd )返回( status , output )
commands . getoutput ( cmd )只返回输出结果
commands . getstatus ( file )返回 ls - ld file 的执行结果字符串,调用了 getoutput,不建议使用这个方法。

4、subprocess模块

使用subprocess模块可以创建新的进程,可以与新建进程的输入/输出/错误管道连通,并可以获得新建进程执行的返回状态。使用subprocess模块的目的是替代os.system()、os.popen*()、commands.*等旧的函数或模块。

Python
import <span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/subprocess" title="View all posts in subprocess" target="_blank">subprocess</a></span> 1、subprocess.call(command, shell=True) #会直接打印出结果。 2、subprocess.Popen(command, shell=True) 也可以是subprocess.Popen(command, stdout=subprocess.PIPE, shell=True) 这样就可以输出结果了。 如果command不是一个可执行文件,shell=True是不可省略的。 shell=True意思是shell下执行command
1
2
3
4
5
6
import subprocess
1、 subprocess . call ( command , shell = True )
#会直接打印出结果。
2、 subprocess . Popen ( command , shell = True ) 也可以是 subprocess . Popen ( command , stdout = subprocess . PIPE , shell = True ) 这样就可以输出结果了。
如果 command不是一个可执行文件, shell = True是不可省略的。
shell = True意思是 shell下执行 command

这四种方法都可以执行shell命令。




  • zeropython 微信公众号 5868037 QQ号 5868037@qq.com QQ邮箱
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值