有很多需求需要在Python中执行shell命令、启动子进程,并捕获命令的输出和退出状态码,类似于Java中的Runtime类库。

subprocess模块的使用:

Python使用最广泛的是标准库的subprocess模块,用来替换os.system(),os.spawn*(),os.popen*()和commands.*等模块与函数。

使用subprocess最简单的方式就是用它提供的便利函数,call,check_all与check_output,当便利函数满足不了要求再使用Popen类。

1. call

subprocess(args,*,stdin=None,stout=None,stderr=None,shell=False)

shell=True,Python会先运行一个shell,再用shell解释字符串,而不是传递一个列表。

2. check_call

check_all与call类似,只是遇到异常情况返回的形式不同,它会抛出subprocess.CalledProcessError异常

3. check_output

这个便利函数是使用最多了,它可以获取命令的结果,而不是退出状态码

如果想要捕捉退出状态码,可以通过抛出的subprocess.CalledProcessError异常

import subprocess

try:

output = subprocess.check_output('ls /zz',shell=True)

except subprocess.CalledProcessError as e:

output = e.output

code = e.returncode

print (code,output)

执行结果:

如果想捕获命令的错误输出,需将错误输出重定向到标准输出

subprocess.check_output(['cmd','arg1','arg2'],stderr=subprocess.STDOUT)

4. 使用Popen

下面的exexute_cmd函数对Popen,进行了封装,执行成功,返回标准输出和状态码,失败是返回状态码和错误输出。

#!/usr/bin/python

#coding=utf8

import subprocess

def execute_cmd(cmd):

p = subprocess.Popen(cmd,

shell=True,

stdin=subprocess.PIPE,

stdout=subprocess.PIPE,

stderr=subprocess.PIPE)

stdout, stderr = p.communicate()

if p.returncode != 0:

return p.returncode, stderr

return p.returncode, stdout

if __name__=='__main__':

cmd='ls /u01'

returncode,out=execute_cmd(cmd)

if returncode != 0:

raise SystemExit('execute {0} err :{1}'.format(cmd,out))

else:

print("execute command ({0} sucessful)".format(cmd))

目录不存时:

python运行命令_Python中执行外部命令相关推荐

  1. python中执行shell命令_python中执行shell命令的几个方法小结-阿里云开发者社区

    Python 执行 shell 命令 最近有个需求就是页面上执行shell命令,第一想到的就是os.system os.system('cat /proc/cpuinfo') 但是发现页面上打印的命令 ...

  2. 在awk中执行外部命令

    在awk中执行外部命令 1.借助system/getline删除 awk '{cmd="rm "$0;system(cmd)}' filename awk '{cmd=" ...

  3. Python中执行外部命令

    有很多需求需要在Python中执行shell命令.启动子进程,并捕获命令的输出和退出状态码,类似于Java中的Runtime类库. subprocess模块的使用: Python使用最广泛的是标准库的 ...

  4. python执行的命令_如何在Python中执行外部命令

    Python子进程模块允许生成新进程,从Python脚本执行外部命令. 您可以使用这些教程来安装最新版本的Python. 此外,还有许多可用于Python IDE. 就像在Ubuntu系统上安装PyC ...

  5. php在linux中执行外部命令

    目录: 一.PHP中调用外部命令介绍 二.关于安全问题 三.关于超时问题 四.关于PHP运行linux环境中命令出现的问题 一.PHP中调用外部命令介绍 在PHP中调用外部命令,可以用,1>调用 ...

  6. java 执行外部命令 苹果_Java中执行外部命令

    在项目中执行一个linux的shell脚本,于是需要在java环境下执行外部命令如系统命令.linux命令的需求,本人小小研究了一下,又上网查了一些资料先整理如下. java执行外部命令主要依赖两个类 ...

  7. java解析shell命令_Android中执行java命令的方法及java代码执行并解析shell命令

    这篇文章给大家介绍Android中执行java命令的方法及java代码执行并解析shell命令,需要的朋友一起学习 android中执行java命令的方法大家都晓得吗,下面一段内容给大家带来了具体解析 ...

  8. python撤回上一条命令_python 中执行上一句话,请教问题,怎么也才能使python执行完上一个命令,再执行下一条语句...

    请教问题,怎么也才能使python执行完上一个命令,再执行下一条语句 正常的批处理文件执行完毕就2113会自动退出,连exit都不5261需要. 你是不是看见执行时4102窗口光标一闪一闪或者闪都不闪 ...

  9. python os.popen.readlines异常_python中执行sed命令操作源文件时出现错误

    我想在python中执行一个sed命令,第一种方法直接指定文件时,可以正确输出结果,但是第二种我打开文件操作的时候就有问题,不知道什么原因,求高手解答?(1)>>>sedcmd=&q ...

最新文章

  1. Mac OSX 10.9下apache+php+mysql的配置
  2. mybatis执行批量更新batch update 的方法(oracle,mysql)
  3. 1154. 一年中的第几天 golang
  4. linux用户及权限操作
  5. 精读《V8 引擎 Lazy Parsing》
  6. DGL实现同构/异构图卷积模型
  7. Direct3D9 Fx/HLSL的若干条有用的笔记
  8. 因触屏故障 美国监管部门对15.9万辆特斯拉进行调查
  9. NS3 MyApp Class Reference
  10. mysql时间函数now()_获得当前日期时间的mysql函数now()
  11. 尚硅谷大数据hadoop教程
  12. 异常和Log4j日志
  13. 计算机组成原理强制类型转换规则,计算机组成原理——浮点数加减运算强制类型转换...
  14. 霍兰德SR型如何选专业?霍兰德职业兴趣测试
  15. vivo4.0以上系统怎么样不用root激活XPOSED框架的教程
  16. 二广高速公路4标段道路设计--武汉理工大学本科生毕业设计
  17. html5添加上下居中,详解HTML5中垂直上下居中的解决方案
  18. MySQL对数据的基本操作三:UPDATE语句
  19. beetl的配置文件介绍
  20. sublime下载及应用

热门文章

  1. 基于java SSM springboot学生信息管理系统设计和实现2.0
  2. oracle 并行用索引,分区索引并行导致的性能问题
  3. 命php令删除文件夹,window_win7系统通过cmd命令提示符的del命令删除文件的详细教程,怎么利用cmd命令提示符的del命 - phpStudy...
  4. 用matlab数学综合实验,MATLAB与数学实验(第2版)
  5. ios android 字体颜色,iOS-修改导航栏文字字体和颜色
  6. 八进制转换成十进制c语言程序,C语言程序 十进制、八进制、十六进制的相互转化...
  7. python git切换分支_git命令之切换分支
  8. if __name__ == __main___一文带你弄懂python中if __name__ == #39;__main__#39;
  9. mysql 值为0 但却被认为null_MySQL介于普通读和锁定读的加锁方式
  10. Yii 2.0 GII 访问404错误