天天看点

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

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

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

1

2

3

<code>&gt;&gt;&gt; os.system(</code><code>'ls'</code><code>)</code>

<code>anaconda</code><code>-</code><code>ks.cfg  install.log  install.log.syslog  send_sms_service.py  sms.py</code>

<code>0</code>

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

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

4

5

<code>&gt;&gt;&gt; </code><code>import</code> <code>os</code>

<code>&gt;&gt;&gt; </code><code>str</code> <code>=</code> <code>os.popen(</code><code>"ls"</code><code>).read()</code>

<code>&gt;&gt;&gt; a </code><code>=</code> <code>str</code><code>.split(</code><code>"\n"</code><code>)</code>

<code>&gt;&gt;&gt; </code><code>for</code> <code>b </code><code>in</code> <code>a:</code>

<code>        </code><code>print</code> <code>b</code>

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

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

6

7

8

9

10

11

12

<code>import</code> <code>commands</code>

<code>a,b </code><code>=</code> <code>commands.getstatusoutput(</code><code>'ls'</code><code>)</code>

<code>a是退出状态</code>

<code>b是输出的结果。</code>

<code>&gt;&gt;&gt; </code><code>import</code> <code>commands</code>

<code>&gt;&gt;&gt; a,b </code><code>=</code> <code>commands.getstatusoutput(</code><code>'ls'</code><code>)</code>

<code>&gt;&gt;&gt; </code><code>print</code> <code>a</code>

<code>&gt;&gt;&gt; </code><code>print</code> <code>b</code>

<code>anaconda</code><code>-</code><code>ks.cfg</code>

<code>install.log</code>

<code>install.log.syslog</code>

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

本文转自 ZhouLS 51CTO博客,原文链接:http://blog.51cto.com/zhou123/1312791