python运行命令_Python中执行外部命令
有很多需求需要在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中执行外部命令相关推荐
- python中执行shell命令_python中执行shell命令的几个方法小结-阿里云开发者社区
Python 执行 shell 命令 最近有个需求就是页面上执行shell命令,第一想到的就是os.system os.system('cat /proc/cpuinfo') 但是发现页面上打印的命令 ...
- 在awk中执行外部命令
在awk中执行外部命令 1.借助system/getline删除 awk '{cmd="rm "$0;system(cmd)}' filename awk '{cmd=" ...
- Python中执行外部命令
有很多需求需要在Python中执行shell命令.启动子进程,并捕获命令的输出和退出状态码,类似于Java中的Runtime类库. subprocess模块的使用: Python使用最广泛的是标准库的 ...
- python执行的命令_如何在Python中执行外部命令
Python子进程模块允许生成新进程,从Python脚本执行外部命令. 您可以使用这些教程来安装最新版本的Python. 此外,还有许多可用于Python IDE. 就像在Ubuntu系统上安装PyC ...
- php在linux中执行外部命令
目录: 一.PHP中调用外部命令介绍 二.关于安全问题 三.关于超时问题 四.关于PHP运行linux环境中命令出现的问题 一.PHP中调用外部命令介绍 在PHP中调用外部命令,可以用,1>调用 ...
- java 执行外部命令 苹果_Java中执行外部命令
在项目中执行一个linux的shell脚本,于是需要在java环境下执行外部命令如系统命令.linux命令的需求,本人小小研究了一下,又上网查了一些资料先整理如下. java执行外部命令主要依赖两个类 ...
- java解析shell命令_Android中执行java命令的方法及java代码执行并解析shell命令
这篇文章给大家介绍Android中执行java命令的方法及java代码执行并解析shell命令,需要的朋友一起学习 android中执行java命令的方法大家都晓得吗,下面一段内容给大家带来了具体解析 ...
- python撤回上一条命令_python 中执行上一句话,请教问题,怎么也才能使python执行完上一个命令,再执行下一条语句...
请教问题,怎么也才能使python执行完上一个命令,再执行下一条语句 正常的批处理文件执行完毕就2113会自动退出,连exit都不5261需要. 你是不是看见执行时4102窗口光标一闪一闪或者闪都不闪 ...
- python os.popen.readlines异常_python中执行sed命令操作源文件时出现错误
我想在python中执行一个sed命令,第一种方法直接指定文件时,可以正确输出结果,但是第二种我打开文件操作的时候就有问题,不知道什么原因,求高手解答?(1)>>>sedcmd=&q ...
最新文章
- Mac OSX 10.9下apache+php+mysql的配置
- mybatis执行批量更新batch update 的方法(oracle,mysql)
- 1154. 一年中的第几天 golang
- linux用户及权限操作
- 精读《V8 引擎 Lazy Parsing》
- DGL实现同构/异构图卷积模型
- Direct3D9 Fx/HLSL的若干条有用的笔记
- 因触屏故障 美国监管部门对15.9万辆特斯拉进行调查
- NS3 MyApp Class Reference
- mysql时间函数now()_获得当前日期时间的mysql函数now()
- 尚硅谷大数据hadoop教程
- 异常和Log4j日志
- 计算机组成原理强制类型转换规则,计算机组成原理——浮点数加减运算强制类型转换...
- 霍兰德SR型如何选专业?霍兰德职业兴趣测试
- vivo4.0以上系统怎么样不用root激活XPOSED框架的教程
- 二广高速公路4标段道路设计--武汉理工大学本科生毕业设计
- html5添加上下居中,详解HTML5中垂直上下居中的解决方案
- MySQL对数据的基本操作三:UPDATE语句
- beetl的配置文件介绍
- sublime下载及应用
热门文章
- 基于java SSM springboot学生信息管理系统设计和实现2.0
- oracle 并行用索引,分区索引并行导致的性能问题
- 命php令删除文件夹,window_win7系统通过cmd命令提示符的del命令删除文件的详细教程,怎么利用cmd命令提示符的del命 - phpStudy...
- 用matlab数学综合实验,MATLAB与数学实验(第2版)
- ios android 字体颜色,iOS-修改导航栏文字字体和颜色
- 八进制转换成十进制c语言程序,C语言程序 十进制、八进制、十六进制的相互转化...
- python git切换分支_git命令之切换分支
- if __name__ == __main___一文带你弄懂python中if __name__ == #39;__main__#39;
- mysql 值为0 但却被认为null_MySQL介于普通读和锁定读的加锁方式
- Yii 2.0 GII 访问404错误