python学习——python中执行shell命令

 

这里介绍一下python执行shell命令的四种方法:

1、os模块中的os.system()这个函数来执行shell命令

<span style="color:#333333"><span style="color:#333333"><span style="color:black"><code class="language-python"><span style="color:#9a6e3a">>></span><span style="color:#9a6e3a">></span> os<span style="color:#999999">.</span>system<span style="color:#999999">(</span><span style="color:#669900">'ls'</span><span style="color:#999999">)</span>
anaconda<span style="color:#9a6e3a">-</span>ks<span style="color:#999999">.</span>cfg  install<span style="color:#999999">.</span>log  install<span style="color:#999999">.</span>log<span style="color:#999999">.</span>syslog  send_sms_service<span style="color:#999999">.</span>py  sms<span style="color:#999999">.</span>py
<span style="color:#990055">0</span></code></span></span></span>

注,这个方法得不到shell命令的输出。

在这里小编推荐一个Python学习交流qq群:882492178,有很多关于深度学习、人工智能、数据处理等内容。

如果没有看过、甚至从来没有接触过编程也不用担心,咱们这里有系统预习资料、会带你从0开始预习,加入即可告别入门难的烦恼。

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

<span style="color:#333333"><span style="color:#333333"><span style="color:black"><code class="language-python"><span style="color:#9a6e3a">>></span><span style="color:#9a6e3a">></span> <span style="color:#0077aa">import</span> os
<span style="color:#9a6e3a">>></span><span style="color:#9a6e3a">></span> <span style="color:#669900">str</span> <span style="color:#9a6e3a">=</span> os<span style="color:#999999">.</span>popen<span style="color:#999999">(</span><span style="color:#669900">"ls"</span><span style="color:#999999">)</span><span style="color:#999999">.</span>read<span style="color:#999999">(</span><span style="color:#999999">)</span>
<span style="color:#9a6e3a">>></span><span style="color:#9a6e3a">></span> a <span style="color:#9a6e3a">=</span> <span style="color:#669900">str</span><span style="color:#999999">.</span>split<span style="color:#999999">(</span><span style="color:#669900">"\n"</span><span style="color:#999999">)</span>
<span style="color:#9a6e3a">>></span><span style="color:#9a6e3a">></span> <span style="color:#0077aa">for</span> b <span style="color:#0077aa">in</span> a<span style="color:#999999">:</span>
        <span style="color:#0077aa">print</span> b</code></span></span></span>

这样得到的结果与第一个方法是一样的。

3、commands模块#可以很方便的取得命令的输出(包括标准和错误输出)和执行状态位

<span style="color:#333333"><span style="color:#333333"><span style="color:black"><code class="language-python"><span style="color:#0077aa">import</span> commands
a<span style="color:#999999">,</span>b <span style="color:#9a6e3a">=</span> commands<span style="color:#999999">.</span>getstatusoutput<span style="color:#999999">(</span><span style="color:#669900">'ls'</span><span style="color:#999999">)</span>
a是退出状态
b是输出的结果。
<span style="color:#9a6e3a">>></span><span style="color:#9a6e3a">></span> <span style="color:#0077aa">import</span> commands
<span style="color:#9a6e3a">>></span><span style="color:#9a6e3a">></span> a<span style="color:#999999">,</span>b <span style="color:#9a6e3a">=</span> commands<span style="color:#999999">.</span>getstatusoutput<span style="color:#999999">(</span><span style="color:#669900">'ls'</span><span style="color:#999999">)</span>
<span style="color:#9a6e3a">>></span><span style="color:#9a6e3a">></span> <span style="color:#0077aa">print</span> a
<span style="color:#990055">0</span>
<span style="color:#9a6e3a">>></span><span style="color:#9a6e3a">></span> <span style="color:#0077aa">print</span> b
anaconda<span style="color:#9a6e3a">-</span>ks<span style="color:#999999">.</span>cfg
install<span style="color:#999999">.</span>log
install<span style="color:#999999">.</span>log<span style="color:#999999">.</span>syslog</code></span></span></span>

commands.getstatusoutput(cmd)返回(status,output)

commands.getoutput(cmd)只返回输出结果

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

 

4、subprocess模块

 

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

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命令。

猜你喜欢

转载自blog.csdn.net/qq_41753040/article/details/90322753
今日推荐