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中文乱码不着急,先看懂字节和字符
Dec 20 Python
python自动发邮件库yagmail的示例代码
Feb 23 Python
python基于物品协同过滤算法实现代码
May 31 Python
python中多层嵌套列表的拆分方法
Jul 02 Python
Pycharm以root权限运行脚本的方法
Jan 19 Python
更新修改后的Python模块方法
Mar 03 Python
学习python分支结构
May 17 Python
Python函数中的可变长参数详解
Sep 12 Python
在Python中使用MySQL--PyMySQL的基本使用方法
Nov 19 Python
Pandas缺失值2种处理方式代码实例
Jun 13 Python
Python环境配置实现pip加速过程解析
Nov 27 Python
pytorch model.cuda()花费时间很长的解决
Jun 01 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读取IMAP邮件
2006/10/09 PHP
PHP中的插件机制原理和实例
2014/07/08 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
js常用代码段整理
2011/11/30 Javascript
基于mootools插件实现遮罩层新手引导
2012/05/24 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
浅谈Javascript 执行顺序
2013/12/18 Javascript
js中运算符&& 和 || 的使用记录
2014/08/21 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
nodejs实现HTTPS发起POST请求
2015/04/23 NodeJs
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
多种jQuery绑定事件的实现方式
2016/06/13 Javascript
jQuery Ajax请求后台数据并在前台接收
2016/12/10 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
原生js实现中奖信息无间隙滚动效果
2017/01/18 Javascript
vue2.0 路由不显示router-view的解决方法
2018/03/06 Javascript
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
2018/07/24 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
使用axios请求接口,几种content-type的区别详解
2019/10/29 Javascript
[01:31]完美与DOTA2历程
2014/07/31 DOTA
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
Django视图和URL配置详解
2018/01/31 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
HTML5 video 事件应用示例
2014/09/11 HTML / CSS
酒店副总经理岗位职责范本
2014/02/04 职场文书
优秀员工演讲稿
2014/05/19 职场文书
幼儿教师自我剖析材料
2014/09/29 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
学校学习型党组织建设心得体会
2019/06/21 职场文书
2019年中学生的思想品德评语集锦
2019/12/19 职场文书
Nginx缓存设置案例详解
2021/09/15 Servers
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA
React更新渲染原理深入分析
2022/12/24 Javascript