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 相关文章推荐
linux系统使用python获取cpu信息脚本分享
Jan 15 Python
Python使用matplotlib绘制动画的方法
May 20 Python
Python爬虫DOTA排行榜爬取实例(分享)
Jun 13 Python
Python 模拟购物车的实例讲解
Sep 11 Python
Python实现求数列和的方法示例
Jan 12 Python
python 使用 requests 模块发送http请求 的方法
Dec 09 Python
pycharm 更改创建文件默认路径的操作
Feb 15 Python
Keras—embedding嵌入层的用法详解
Jun 10 Python
基于python实现判断字符串是否数字算法
Jul 10 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 Python
Pytorch实现WGAN用于动漫头像生成
Mar 04 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生成文件
2007/01/15 PHP
php文件上传表单摘自drupal的代码
2011/02/15 PHP
10个实用的PHP代码片段
2011/09/02 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
js chrome浏览器判断代码
2010/03/28 Javascript
javascript取消文本选定的实现代码
2010/11/14 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
jQuery图片播放8款精美插件分享
2013/02/17 Javascript
Javascript加载速度慢的解决方案
2014/03/11 Javascript
jQuery大于号(>)选择器的作用解释
2015/01/13 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
判断数组的最佳方法(推荐)
2016/10/11 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
layui table复选框禁止某几条勾选的实例
2019/09/20 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
详解python配置虚拟环境
2019/04/08 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
2020/04/08 Python
使用纯 CSS 创作一个脉动 loader效果的源码
2018/09/28 HTML / CSS
Otticanet美国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
留学自荐信写作方法
2014/01/27 职场文书
上班看电影检讨书
2014/02/12 职场文书
护理专业求职信
2014/06/15 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
报到证办理个人委托书
2014/10/06 职场文书
场地使用证明模板
2014/10/25 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书