python中shell执行知识点

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 执行内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 在python shell中运行python文件的实现

    最近在学习flask开发,写好程序后需要在python shell中运行测试功能.专门抽时间研究了下,总结以防止以后遗忘. 这是测试文件的结构,python_example主文件夹,下面有example.py和一个subexample子文件夹,我要分别调用example.py和subexample.py. 主要三段代码 1.import sys 此时默认读取和python shell一个文件夹下的python,若是程序放在别处,需添加文件所在路径.再导入文件. 2.sys.path.append

  • shell自动安装python3的脚本写法

    root用户权限 # vim install_python3.sh 1 #!/bin/sh yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel wget https://www.python.org/ftp/python/3.7.0

  • python获取交互式ssh shell的方法

    更新,最近在学unix环境编程,了解一下进程的创建过程,用最原始的方式实现了一个ssh命令的执行. #coding=utf8 ''' 用python实现了一个简单的shell,了解进程创建 类unix 环境下 fork和exec 两个系统调用完成进程的创建 ''' import sys, os def myspawn(cmdline): argv = cmdline.split() if len(argv) == 0: return program_file = argv[0] pid = os

  • Python IDLE或shell中切换路径的操作

    在Python自带的编辑器IDLE中或者Python shell中不能使用cd命令,那么跳到目标路径呢. 方法是使用os包下的相关函数实现路径切换功能. import os os.getcwd() #获取当前路径 os.chdir("D:\\test") #跳到目标路径下 os.chdir('D:\\test') #单引号.双引号都可以 补充知识:Python更改IDLE默认保存路径 每次都修改保存路径还挺烦人的. 1 右键IDLE,更多,打开文件位置(开始.搜索IDLE) 2 打开文

  • python 实现在shell窗口中编写print不向屏幕输出

    前言 由于需要在python的shell窗口中直接写函数,而函数代码中需要有print,而通常写入print换行后都会向屏幕输出, 所以有了以下解决方案: 例子 其实也什么特别,就是在编写函数时,函数里面的每句代码前面都加上tab进行缩进. 以上这篇python 实现在shell窗口中编写print不向屏幕输出就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • python中shell执行知识点

    os.system system方法会创建子进程运行外部程序,方法只返回外部程序的运行结果.这个方法比较适用于外部程序没有输出结果的情况. import os os.system('ls') commands.getstatusoutput 使用commands模块的getoutput方法,这种方法同popend的区别在于popen返回的是一个文件句柄,而本方法将外部程序的输出结果当作字符串返回,很多情况下用起来要更方便些. 主要方法: commands.getstatusoutput(cmd)

  • python中HTMLParser模块知识点总结

    本章内容,我们主要来讲一下Python内置的HTML解析库HTMLParser模块,基本上也是应用于页面抓取上,假设,我们需要去收集页面上已存在的静态链接,但是页面肯定代码量都非常大,并且页面也很多,这样看来,会比较麻烦,工作量也非常大,这个时候,我们就可以用到htmlparser模块,一起来了解具体使用内容. 安装: npm install htmlparser htmlparser提供构造函数: function Parser(handler) { this._handler = handl

  • python中__init__方法知识点详解

    目录 介绍__init__方法的作用 讲解__init__方法的语法 演示如何在类中使用__init__方法初始化类的属性 讲解如何使用__init__方法给对象动态添加属性 __init__方法的多态特性 __init__和super的用法 提醒注意事项 总结 介绍__init__方法的作用 __init__ 方法是 Python 中面向对象编程中类的特殊方法,也称为构造方法,当创建一个类的实例时,__init__ 方法会自动调用. 它的主要作用是初始化实例的属性,在实例被创建后,你可以通过这

  • python中count函数知识点浅析

    python中,count函数的作用是进行python中的数量计算.count函数用于统计字符串.列表或元祖中某个字符出现的次数,是一个很好用的统计函数.具体介绍请看本文. 1.count函数 统计列表ls中value元素出现的次数 2.语法 str.count("char", start,end) 或 str.count("char") -> int 返回整数 3.参数 str -- 为要统计的字符(可以是单字符,也可以是多字符). star -- 为索引字

  • python中re模块知识点总结

    一.什么是正则表达式? 正则表达式,又称规则表达式,通常被用来检索.替换那些符合某个模式(规则)的文本. 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑. 二.正则表达式的匹配规则 1.表示字符 ·:匹配任意除换行符'\n'外的字符,但是在DOTALL模式中也可以匹配换行符'\n' \:转义字符,使后一个字符改变原来的意思,如果字符串中想匹配*,可

  • Python中的反射知识点总结

    通过字符串映射或修改程序运行时的状态.属性.方法, 可以通过下面这4中方法 ''' 使用getattr(object, name_str, default=None) 方法获取object对象里 对应的方法或者属性的内存地址 如果是属性:直接返回属性值 如果是方法:返回方法的内存地址 ''' # hasattr(object,name_str) 判断object对象是否有一个名为name_str的方法或者属性 代码演示: # -*- coding:utf8 -*- class Person(ob

  • 改变 Python 中线程执行顺序的方法

    一.主线程会等待所有的子线程结束后才结束 首先我看下最普通情况下,主线程和子线程的情况. import threading from time import sleep, ctime def sing(): for i in range(3): print("正在唱歌...%d" % i) sleep(1) def dance(): for i in range(3): print("正在跳舞...%d" % i) sleep(1) if __name__ == '

  • 复习Python中的字符串知识点

    字符串 在 Python 中创建字符串对象非常容易.只要将所需的文本放入一对引号中,就完成了一个新字符串的创建(参见清单 1).如果稍加思考的话,您可能会感到有些困惑.毕竟,有两类可以使用的引号:单引号 (') 和双引号 (").幸运的是,Python 再一次使这种问题迎刃而解.您可以使用任意一类引号来表示 Python 中的字符串,只要引号一致就行.如果字符串是以单引号开始,那么必须以单引号结束,反之亦然.如果不遵循这一规则,则会出现 SyntaxError 异常. 清单 1. 在 Pytho

  • Python中的列表知识点汇总

    Python list 在介绍 Python tuple 时,我使用了类比的方法,将其比做一个袋子,您可以在袋子中存放不同的东西.Python list 与此非常类似,因此,它的功能与袋子的功能也非常类似.但有一点是不同的,即您可以使用方括号创建 list,如清单 1 所示. 清单 1. 在 Python 中创建一个 list >>> l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> l [0, 1, 2, 3, 4, 5, 6, 7, 8,

  • Python中的引用知识点总结

    本篇介绍Python中的引用. 首先想一想如图示例. 在python中,值是靠引用来传递来的. 用id()来判断两个变量是否为同一个值的引用.如图. 图解引用.如图. 可变类型与不可变类型.如图.

随机推荐