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计算两个日期相差天数的方法示例
May 23 Python
Anaconda多环境多版本python配置操作方法
Sep 12 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
Feb 13 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
Dec 05 Python
IntelliJ IDEA安装运行python插件方法
Dec 10 Python
详解python算法之冒泡排序
Mar 05 Python
调试Django时打印SQL语句的日志代码实例
Sep 12 Python
TensorFlow获取加载模型中的全部张量名称代码
Feb 11 Python
Python 给下载文件显示进度条和下载时间的实现
Apr 02 Python
解决Jupyter无法导入已安装的 module问题
Apr 17 Python
Python requests.post方法中data与json参数区别详解
Apr 30 Python
给ubuntu18安装python3.7的详细教程
Jun 08 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中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
PHP实现的进度条效果详解
2016/05/03 PHP
PHP __call()方法实现委托示例
2019/05/20 PHP
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
jQuery封装的获取Url中的Get参数示例
2013/11/26 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
jQuery实现tag便签去重效果的方法
2015/01/20 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
字太多用...代替的方法(两种)
2017/03/15 Javascript
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
jQuery实现导航样式布局操作示例【可自定义样式布局】
2018/07/24 jQuery
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
2019/01/27 Javascript
js实现倒计时器自定义时间和暂停
2019/02/25 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
Angular脚手架开发的实现步骤
2019/04/09 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
Python 基础之字符串string详解及实例
2017/04/01 Python
Python中偏函数用法示例
2018/06/07 Python
详解python tkinter教程-事件绑定
2019/03/28 Python
python scrapy爬虫代码及填坑
2019/08/12 Python
如何基于Python创建目录文件夹
2019/12/31 Python
Python小白垃圾回收机制入门
2020/06/09 Python
非常详细的C#面试题集
2016/07/13 面试题
社区文艺活动方案
2014/08/19 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android
详解nginx安装过程并代理下载服务器文件
2022/02/12 Servers
MySQL数据库简介与基本操作
2022/05/30 MySQL