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中的exec、eval使用实例
Sep 23 Python
使用SAE部署Python运行环境的教程
May 05 Python
Python 基础教程之闭包的使用方法
Sep 29 Python
使用python编写简单的小程序编译成exe跑在win10上
Jan 15 Python
Python检测网络延迟的代码
May 15 Python
python3中函数参数的四种简单用法
Jul 09 Python
Python批量生成特定尺寸图片及图画任意文字的实例
Jan 30 Python
django做form表单的数据验证过程详解
Jul 26 Python
python 使用while循环输出*组成的菱形实例
Apr 12 Python
Python实现FTP文件定时自动下载的步骤
Dec 19 Python
Python实现智慧校园自动评教全新版
Jun 18 Python
django中websocket的具体使用
Jan 22 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/04/18 PHP
解析thinkphp import 文件内容变量失效的问题
2013/06/20 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
Fedora下安装php Redis扩展笔记
2014/09/03 PHP
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
PHP查询分页的实现代码
2017/06/09 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
js构造函数、索引数组和属性的实现方式和使用
2014/11/16 Javascript
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
2015/10/09 Javascript
JavaScript中的各种操作符使用总结
2016/05/26 Javascript
使用 Vue.js 仿百度搜索框的实例代码
2017/05/09 Javascript
VueJs使用Amaze ui调整列表和内容页面
2017/11/30 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
JavaScript中变量、指针和引用功能与操作示例
2018/08/04 Javascript
JavaScript遍历数组和对象的元素简单操作示例
2019/07/09 Javascript
使用 Element UI Table 的 slot-scope方法
2019/10/10 Javascript
Vue学习之axios的使用方法实例分析
2020/01/06 Javascript
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
用Python制作检测Linux运行信息的工具的教程
2015/04/01 Python
Python定时执行之Timer用法示例
2015/05/27 Python
Python输出汉字字库及将文字转换为图片的方法
2016/06/04 Python
如何用Python合并lmdb文件
2018/07/02 Python
python实现趣味图片字符化
2019/04/30 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
基于Python检测动态物体颜色过程解析
2019/12/04 Python
Python读写压缩文件的方法
2020/07/30 Python
python exit出错原因整理
2020/08/31 Python
日本7net购物网:书籍、漫画、杂志、DVD、游戏邮购
2017/02/17 全球购物
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
残疾人创业典型事迹
2014/02/01 职场文书
2014年教师节寄语
2014/08/11 职场文书
党风廉政建设个人总结
2015/03/06 职场文书
小学教师个人工作总结2015
2015/04/20 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript
使用Python开发冰球小游戏
2022/04/30 Python