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 相关文章推荐
Python中文分词实现方法(安装pymmseg)
Jun 14 Python
python select.select模块通信全过程解析
Sep 20 Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 Python
详解Python sys.argv使用方法
May 10 Python
python 返回一个列表中第二大的数方法
Jul 09 Python
python中树与树的表示知识点总结
Sep 14 Python
python 用 xlwings 库 生成图表的操作方法
Dec 22 Python
在Django中预防CSRF攻击的操作
Mar 13 Python
python3中的logging记录日志实现过程及封装成类的操作
May 12 Python
Django ORM filter() 的运用详解
May 14 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
Dec 23 Python
如何获取numpy array前N个最大值
May 14 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
php魔术方法与魔术变量、内置方法与内置变量的深入分析
2013/06/03 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
Javascript模块模式分析
2008/05/16 Javascript
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
JavaScript入门之基本函数详解
2011/10/21 Javascript
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
2014/08/01 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
npm配置国内镜像资源+淘宝镜像的方法
2018/09/07 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
微信小程序实现banner图轮播效果
2020/06/28 Javascript
Vue.js递归组件实现组织架构树和选人功能
2019/07/04 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
JS中的继承操作实例总结
2020/06/06 Javascript
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
js实现纯前端压缩图片
2020/11/16 Javascript
python模拟新浪微博登陆功能(新浪微博爬虫)
2013/12/24 Python
Django自定义插件实现网站登录验证码功能
2017/04/19 Python
python安装numpy&安装matplotlib& scipy的教程
2017/11/02 Python
python 检查文件mime类型的方法
2018/12/08 Python
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
Python批量将图片灰度化的实现代码
2020/04/11 Python
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
经典C++面试题一
2016/11/06 面试题
建筑总经理岗位职责
2014/02/02 职场文书
调研汇报材料范文
2014/08/17 职场文书
个人债务授权委托书
2014/10/17 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python