python中shell执行知识点


Posted in Python onMay 06, 2020

os.system

system方法会创建子进程运行外部程序,方法只返回外部程序的运行结果。这个方法比较适用于外部程序没有输出结果的情况。

import os
os.system('ls')

commands.getstatusoutput

使用commands模块的getoutput方法,这种方法同popend的区别在于popen返回的是一个文件句柄,而本方法将外部程序的输出结果当作字符串返回,很多情况下用起来要更方便些。
主要方法:

  • commands.getstatusoutput(cmd) 返回(status, output)
  • commands.getoutput(cmd) 只返回输出结果
  • commands.getstatus(file) 返回ls -ld file的执行结果字符串,调用了getoutput,不建议使用此方法

当需要得到外部程序的输出结果时,本方法非常有用。比如使用urllib调用Web API时,需要对得到的数据进行处理。os.popen(cmd) 要得到命令的输出内容,只需再调用下read()或readlines()等 如a=os.popen(cmd).read()

import os
ls = os.popen('ls')
print ls.read()

commands.getstatusoutput

使用commands模块的getoutput方法,这种方法同popend的区别在于popen返回的是一个文件句柄,而本方法将外部程序的输出结果当作字符串返回,很多情况下用起来要更方便些。
主要方法:

  • commands.getstatusoutput(cmd) 返回(status, output)
  • commands.getoutput(cmd) 只返回输出结果
  • commands.getstatus(file) 返回ls -ld file的执行结果字符串,调用了getoutput,不建议使用此方法
import commands
commands.getstatusoutput('ls -lt')   # 返回(status, output)

subprocess.call

根据Python官方文档说明,subprocess模块用于取代上面这些模块。有一个用Python实现的并行ssh工具—mssh,代码很简短,不过很有意思,它在线程中调用subprocess启动子进程来干活。

from subprocess import call
call(["ls", "-l"])
import shlex, subprocess
def shell_command(cmd, timeout) :
  data = {"rc":False, "timeout":False, "stdout":"", "stderr":""}
  try :
    process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    try:
      outs, errs = process.communicate(timeout=timeout)
      data["stdout"] = outs.decode("utf-8") 
      data["stderr"] = errs.decode("utf-8") 
      data["rc"] = True

    except subprocess.TimeoutExpired :
      process.kill()
      outs, errs = process.communicate()
      data["rc"] = False 
      data["stdout"] = outs.decode("utf-8") 
      data["stderr"] = "timeout"
      data["timeout"] = True 

  except Exception as e :
    data["rc"] = False 
    data["stderr"] = e 

  finally : 
    return data

到此这篇关于python中shell执行知识点的文章就介绍到这了,更多相关python shell 执行内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
下载安装setuptool和pip linux安装pip    
Jan 24 Python
Python 字典(Dictionary)操作详解
Mar 11 Python
python+django快速实现文件上传
Oct 24 Python
python逆向入门教程
Jan 15 Python
python的pandas工具包,保存.csv文件时不要表头的实例
Jun 14 Python
详解Python给照片换底色(蓝底换红底)
Mar 22 Python
eclipse创建python项目步骤详解
May 10 Python
python+selenium 点击单选框-radio的实现方法
Sep 03 Python
Django后端发送小程序微信模板消息示例(服务通知)
Dec 17 Python
Python递归调用实现数字累加的代码
Feb 25 Python
基于python实现计算且附带进度条代码实例
Mar 31 Python
最新Python idle下载、安装与使用教程图文详解
Nov 28 Python
Python 通过监听端口实现唯一脚本运行方式
May 05 #Python
python2.7使用scapy发送syn实例
May 05 #Python
python 使用raw socket进行TCP SYN扫描实例
May 05 #Python
Python之变量类型和if判断方式
May 05 #Python
Python实现CAN报文转换工具教程
May 05 #Python
python TCP包注入方式
May 05 #Python
python构造IP报文实例
May 05 #Python
You might like
单位速度在实战中的运用
2020/03/04 星际争霸
PHP中的错误处理、异常处理机制分析
2012/05/07 PHP
如何在php中正确的使用json
2013/08/06 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
IE8 原生JSON支持
2009/04/13 Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
chrome浏览器不支持onmouseleave事件的解决技巧
2013/05/31 Javascript
jQuery之尺寸调整组件的深入解析
2013/06/19 Javascript
javascript 获取元素样式必杀技
2014/05/04 Javascript
javascript中var的重要性分析
2015/02/11 Javascript
jQuery学习笔记之回调函数
2016/08/15 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
JS触摸事件、手势事件详解
2017/05/04 Javascript
Angular4学习笔记router的简单使用
2018/03/30 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
vue-cli 打包使用history模式的后端配置实例
2018/09/20 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
JavaScript事件委托实现原理及优点进行
2020/08/29 Javascript
[45:16]完美世界DOTA2联赛循环赛 IO vs FTD BO2第二场 11.05
2020/11/06 DOTA
python 中文字符串的处理实现代码
2009/10/25 Python
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
python fabric实现远程部署
2017/01/05 Python
Python中input与raw_input 之间的比较
2017/08/20 Python
import的本质解析
2017/10/30 Python
详解python校验SQL脚本命名规则
2019/03/22 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
Django发送邮件和itsdangerous模块的配合使用解析
2019/08/10 Python
PyTorch中topk函数的用法详解
2020/01/02 Python
学生的自我鉴定范文
2013/10/24 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
父亲去世追悼词
2015/06/23 职场文书
汽车销售员工作总结
2015/08/12 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
Python实现日志实时监测的示例详解
2022/04/06 Python
vue实现列表垂直无缝滚动
2022/04/08 Vue.js