python执行cmd系统命令获取返回值的几种方式
python 执行shell命令
注:python3.X模块中以废弃commands该模块,使用subprocess模块在本文下面增加解说
本篇介绍如何使用python在cmd上执行shell命令
用Python写运维脚本时,经常需要执行linux shell的命令,Python中的commands模块专门用于调用Linux shell命令,并返回状态和结果
一:通过os模块
第一种,只执行命令,但是没有返回值:运用os模块
import os
os.system("命令")
这种只执行系统命令,,但是不获取返回值,不是很推荐
可以获取到返回值:
result = os.popen('命令')
res = result.read()
for line in res.splitlines():print line
二:通过commands的函数
需要先引入commands模块
1.commands.getouput(‘shell command’)
执行shell命令,返回结果(string类型)
cmd = "curl -s \"127.0.0.1:7070/api/v3/column/m.id,m.ip?m.sr.id=sls-backend-server.FuxiServiceSlsShennongWorker%23\"|grep m.ip|head -n 1 |awk '{print $2}'"
dockervm_ip = commands.getoutput(cmd)
print(dockervm_ip)
结果:
getoutput直接返回命令的结果,建议使用该命令
2.commands.getstatus(‘命令’)
执行shell命令,该命令返回的的是元组tuple,包含两个元素(status,result),status为int类型,result为string类型
status表示统计的状态,result表示命令的结果数据
cmd="curl -s \"127.0.0.1:7070/api/v3/column/m.id,m.ip?m.sr.id=sls-backend-server.FuxiServiceSlsShennongWorker%23\""
dockervm_ip = commands.getstatusoutput(cmd)
print dockervm_ip
结果:
从结果中可以看出,返回了统计的数据status,还有python中的换行符号等,若是有需求可以使用这条命令
= = = = = = = = = = = = = = = = = = 分割线 = = = = = = = = = == = = = = = = = = = = = = = =
subprocess
本次更新2020.09.11号,
之前使用commands的时候是在我们公司内网线上环境使用的,我们公司内网默认使用的是python2.x版本,所以可以正常使用commands模块,但是前两天我使用自己本地环境(python3.x)时,发现没有commands这个模块,去查了下才发现已经被subprocess模块替代了。
suborocess模块中常用的函数:
函数 | 描述 |
---|---|
subprocess.run() | Python 3.5中新增的函数。执行指定的命令,等待命令执行完成后返回一个包含执行结果的CompletedProcess类的实例。 |
subprocess.call() | 执行指定的命令,返回命令执行状态,其功能类似于os.system(cmd)。 |
subprocess.check_call() | Python 2.5中新增的函数。 执行指定的命令,如果执行成功则返回状态码,否则抛出异常。其功能等价于subprocess.run(…, check=True)。 |
subprocess.check_output() | Python 2.7中新增的的函数。执行指定的命令,如果执行状态码为0则返回命令执行结果,否则抛出异常。 |
subprocess.getoutput(cmd) | 接收字符串格式的命令,执行命令并返回执行结果,其功能类似于os.popen(cmd).read()和commands.getoutput(cmd)。 |
subprocess.getstatusoutput(cmd) | 执行cmd命令,返回一个元组(命令执行状态, 命令执行结果输出),其功能类似于commands.getstatusoutput()。 |
subprocess.getoutput()和subprocess.getstatusoutput()函数是来自Python 2.x的commands模块的两个遗留函数。它们隐式的调用系统shell,并且不保证其他函数所具有的安全性和异常处理的一致性。另外,它们从Python 3.3.4开始才支持Windows平台。
subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值
subprocess 模块首先推荐使用的是它的 run 方法,更高级的用法可以直接使用 Popen 接口。相关的介绍可以看下菜鸟
python执行cmd系统命令获取返回值的几种方式相关推荐
- python执行系统命令后获取返回值的几种方式集合
第一种情况 os.system('ps aux') 执行系统命令,没有返回值 第二种情况 result = os.popen('ps aux') res = result.read() for lin ...
- 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )
文章目录 前言 一.等待远程进程 mmap 函数执行完毕 二.从寄存器中获取进程返回值 三.博客资源 前言 前置博客 : [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | ...
- Mybatis使用注解的方式执行存储过程并获取返回值
开始 通过搜索引擎搜索了获取返回值的Mybatis注解配置方式,但是都搜索不到,都是xml配置方式,尝试自己写出来了. 过程 首先要有一个存储过程,in,out值. 配置mapper: 部分代码: / ...
- 拿到JS异步函数返回值的几种方式
在我们的编码过程中,为了满足业务需求,经常需要获取JS异步函数的返回值.今天就来汇总一下拿值的几种方式. 1,通过回调函数的方式来拿返回值,这个想必大家不会陌生 function getSomethi ...
- SqlSugar 执行存储过程和获取返回值
根据官方文档 如下: //简单用法 var dt = db.Ado.UseStoredProcedure().GetDataTable("sp_school",new{name=& ...
- keil5函数 默认返回值_python实用技巧——获取部分返回值的4种方式
喜欢编程,热爱分享,希望能结交更多志同道合的朋友,一起在学习Python的道路上走得更远! python的函数支持返回多个值.返回多个值时,默认以tuple的方式返回. 例如,下面两个函数的定义是完全 ...
- IDEA自动补全返回值的三种方式
一. 前言 平常在编码的过程中,可能需要调用第三方Api接口,这个过程中可能涉及到不太熟悉第三方Api接口的返回值类型,有可能是String.int.Object.void 等等这些,为了方便快速编码 ...
- shell中循环执行某个进程获取返回值,并循环执行直到函数出错
测试进程test的代码 #include <stdio.h>int main(){return 0; } 编译出测试程序: gcc test.c -o test 测试脚本 #!/bin/s ...
- python 调用控制台并获取返回结果_Java调用Python脚本并获取返回值
在Java程序中有时需要调用Python的程序,这时可以使用一般的PyFunction来调用python的函数并获得返回值,但是采用这种方法有可能出现一些莫名其妙的错误,比如ImportError.在 ...
最新文章
- 如何获取iOS设备的IP地址
- oracle ipc message,【案例】Oracle RAC IPC send timeout error导致RAC的节点挂起解决办法
- 无线呼叫服务器对码设置,楼层呼叫器对码方式种类
- js数组操作各种方法
- Java回文数.如12321,123454321(5个数)
- imx6ull EMMC和NABD 的移植注意事项,差别
- Python数据可视化的四种简易方法 1
- linux系统多大分区,linux系统中fdisk最大能认到多大分区
- hua图软件 mac_sai mac中文版|sai绘画软件 For Mac下载 v3.0 官方版 - 121苹果网
- 电子元件-双向触发二极管与可控硅
- 89C51单片机内部结构深度解析
- UNITY个人版设置深色主题
- js:简单的盒子碰撞
- 微信小程序之页面样式以及背景图片显示问题
- 记一次简单高效的吸血鬼算法
- 运动控制器多工位位置比较输出在转盘式视觉筛选设备中的应用
- 北华航天工业学院计算机如何,北华航天工业学院的实力怎么样?如何评价这所学校?...
- 11 万字的字节码编程系列合集放送(ASM、Javassist、Byte-buddy、Javaagent)
- HTML打造动漫人物,好莱坞顶级制作联袂打造!《和平精英》首部官方角色·吉莉 动画短片发布...
- 旧版RTSP协议网页视频无插件直播EasyNVR视频平台为什么无法播放H264编码视频?