superxuezhazha
python学习——python中执行shell命令
2013-10-21 17:44:33
标签:python shell命令
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://zhou123.blog.51cto.com/4355617/1312791

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

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

1
2
3
>>> os.system(\'ls\')
anaconda-ks.cfg  install.log  install.log.syslog  send_sms_service.py  sms.py
0

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

 

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

1
2
3
4
5
>>> import os
>>> str = os.popen("ls").read()
>>> a = str.split("\n")
>>> for in a:
        print b

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

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

1
2
3
4
5
6
7
8
9
10
11
12
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.*等旧的函数或模块。

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

 

 

本文出自 “linux学习” 博客,请务必保留此出处http://zhou123.blog.51cto.com/4355617/1312791

分类:

技术点:

相关文章:

  • 2022-01-20
  • 2022-12-23
  • 2021-07-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-19
  • 2022-12-23
猜你喜欢
  • 2022-01-02
  • 2022-01-02
  • 2022-01-11
  • 2022-01-18
  • 2021-08-06
  • 2021-12-27
相关资源
相似解决方案