Python执行shell命令(并获取执行结果) 您所在的位置:网站首页 popen读取 Python执行shell命令(并获取执行结果)

Python执行shell命令(并获取执行结果)

2024-02-02 07:23| 来源: 网络整理| 查看: 265

python执行shell命令,一般使用os或subprocess模块。 两者都可以执行shell命令,但执行效果还是不一样的。 subprocess模块的使用可以参考 话不多说直接上代码

代码 # -*- coding: utf-8 - import os import subprocess # 只能判断是否执行成功 def os_system(stmt): result = os.system(stmt) if result is not 0: print("命令执行失败") else: return result # 结果为0则表示执行成功,为其他值则表示执行不成功 # 只能获取执行结果 def os_popen(stmt, *parm): re = os.popen(stmt).readlines() result = [] for i in range(0, len(re) - 1): # 由于原始结果需要转换编码,所以循环转为utf8编码并且去除\n换行 res = re[i].strip('\n') result.append(res) if parm == (): return result # 获取全部执行结果 else: line = int(parm[0]) - 1 return result[line] # 获取执行结果的指定行 # 只能判断是否执行成功 def subprocess_call(stmt): result = subprocess.call(stmt) # 执行失败不需要特殊处理,命令执行失败会直接报错 return result # 结果为0则表示执行成功,为其他值则表示执行不成功 # 只能判断是否执行成功 def subprocess_check_call(stmt): # 基本与call一致 result = subprocess.check_call(stmt) # 执行失败不需要特殊处理,命令执行失败会直接报错 return result # 结果为0则表示执行成功,为其他值则表示执行不成功 # 只能获取执行结果 def subprocess_getoutput(stmt): result = subprocess.getoutput(stmt) # 执行失败不需要特殊处理,因为该方法无法判断失败成功,只负责将结果进行返回 return result # 返回执行结果,但是结果返回的是一个str字符串(不论有多少行) # 只能获取执行结果 def subprocess_check_output(stmt): result = subprocess.check_output(stmt).decode('utf-8') # 执行失败不需要特殊处理,命令执行失败会直接报错 return result # 返回执行结果,但是结果返回的是一个str字符串(不论有多少行),并且返回的结果需要转换编码 # 既可以判断执行是否成功,还可以获取执行结果 def subprocess_popen(statement): p = subprocess.Popen(statement, shell=True, stdout=subprocess.PIPE) # 执行shell语句并定义输出格式 while p.poll() is None: # 判断进程是否结束(Popen.poll()用于检查子进程(命令)是否已经执行结束,没结束返回None,结束后返回状态码) if p.wait() is not 0: # 判断是否执行成功(Popen.wait()等待子进程结束,并返回状态码;如果设置并且在timeout指定的秒数之后进程还没有结束,将会抛出一个TimeoutExpired异常。) print("命令执行失败,请检查设备连接状态") return False else: re = p.stdout.readlines() # 获取原始执行结果 result = [] for i in range(len(re)): # 由于原始结果需要转换编码,所以循环转为utf8编码并且去除\n换行 res = re[i].decode('utf-8').strip('\r\n') result.append(res) return result 结果查看(自己体会)

统一执行命令“ls”和错误命令“lss”

os.system

在这里插入图片描述 在这里插入图片描述

os.popen

在这里插入图片描述 在这里插入图片描述

subprocess.call

在这里插入图片描述 在这里插入图片描述

subprocess.check_call

在这里插入图片描述 在这里插入图片描述

subprocess.getoutput

在这里插入图片描述 在这里插入图片描述

subprocess.check_output

在这里插入图片描述 在这里插入图片描述

subprocess.Popen在这里插入图片描述

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有