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 操作MySQL详解及实例
Apr 30 Python
python用户管理系统
Mar 13 Python
python 获取文件下所有文件或目录os.walk()的实例
Apr 23 Python
Flask实现图片的上传、下载及展示示例代码
Aug 03 Python
浅析python中numpy包中的argsort函数的使用
Aug 30 Python
Python/ArcPy遍历指定目录中的MDB文件方法
Oct 27 Python
对python中xlsx,csv以及json文件的相互转化方法详解
Dec 25 Python
python中while和for的区别总结
Jun 28 Python
python代理工具mitmproxy使用指南
Jul 04 Python
解析PyCharm Python运行权限问题
Jan 08 Python
python匿名函数lambda原理及实例解析
Feb 07 Python
Python手拉手教你爬取贝壳房源数据的实战教程
May 21 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目录导航文件代码
2006/10/09 PHP
php中处理模拟rewrite 效果
2006/12/09 PHP
PHP连接sql server 2005环境配置及问题解决
2014/08/08 PHP
Windows下的PHP安装pear教程
2014/10/24 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
2016/04/11 PHP
深入理解JavaScript系列(16) 闭包(Closures)
2012/04/12 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
制作jquery遮罩层效果导航菜单代码分享
2013/12/25 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
2014/01/02 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
2015/12/10 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
JavaScript实现开关等效果
2017/09/08 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
javaScript实现滚动条事件详解
2020/03/24 Javascript
微信小程序如何使用globalData的方法
2019/06/06 Javascript
Python的净值数据接口调用示例分享
2016/03/15 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
Numpy数组转置的两种实现方法
2018/04/17 Python
python安装sklearn模块的方法详解
2020/11/28 Python
利用python爬取有道词典的方法
2020/12/08 Python
开发中都用到了那些设计模式?用在什么场合?
2014/08/21 面试题
社团活动策划书范文
2014/01/09 职场文书
年终考核评语
2014/01/19 职场文书
员工晚婚的请假条
2014/02/08 职场文书
有关爱国演讲稿
2014/05/07 职场文书
工厂门卫的岗位职责
2014/07/27 职场文书
2015年光棍节活动总结
2015/03/24 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书
2016新党章学习心得体会
2016/01/15 职场文书
决心书格式及范文
2019/06/24 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL