专栏首页python3python执行shell命令的方法

python执行shell命令的方法

os模块

os.system方式:

import os
os.system('top')
os.system('cat /proc/cpuinfo')

说明

  • 这个调用相当直接,且是同步进行的,程序需要阻塞并等待返回。
  • 返回值是依赖于系统的,直接返回系统的调用返回值,所以windows和linux是不一样的。
  • 强调的一点是,不支持参数,不支持管道

os.open方式:

import os
output = os.popen('df')
print output.read()   #如果命令自身无报错,则返回正确的值

说明

  • popen方法通过p.read()获取终端输出,而且popen需要关闭close().
  • 当执行成功时,close()不返回任何值,失败时,close()返回系统返回值..
  • 可见它获取返回值的方式和os.system不同
  • 强调的一点是,不支持参数,不支持管道

commands模块

使用commands模块的getoutput方法,这种方法同popend的区别在于popen返回的是一个文件句柄,而本方法将外部程序的输出结果当作字符串返回,很多情况下用起来要更方便些。

主要方法:

  • commands.getstatusoutput(cmd) 返回(status, output)
  • commands.getoutput(cmd) 只返回输出结果
  • commands.getstatus(file) 返回ls -ld file的执行结果字符串,调用了getoutput,不建议使用此方法
a = commands.getoutput('ps -ef ')
b = commands.getstatusoutput('vmstat')

subprocess模块

说明

  • 使用subprocess模块能够创建新的进程。
  • 能够与新建进程的输入/输出/错误管道连通。
  • 并能够获得新建进程运行的返回状态。
  • 使用subprocess模块的目的是替代os.system()、os.popen()、commands.等旧的函数或模块。

subprocess.call(["some_command","some_argument","another_argument_or_path")

from subprocess import call
call(['ls','-l','/boot','/sys'])    #
call('ls -a /',shell=True)

subprocess.Popen(command,shell=True)

class subprocess.Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, 
    preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=False,
    startup_info=None, creationflags=0, restore_signals=True, start_new_session=False, pass_fds=())

 subprocess.Popen类的实例的一些方法:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ospfv3的基本配置

    py3study
  • subprocess.popen.kill杀死所有子进程

    subprocess.Popen(['google-chrome',"http://www.baidu.com"])可打开chrome并显示百度网页。

    py3study
  • python gflags介绍与使用

    2.下载setuptools并安装,地址为:http://pypi.python.org/packages/2.6/s/setuptools/setuptoo...

    py3study
  • python3 内置函数详解

    程序员同行者
  • SwiftUI:自定义 Shape 使用 InsettableShape 协议实现向内绘制边框

    如果创建的形状没有特定大小,它将自动扩展以占据所有可用空间。例如,这将创建一个填充我们视图的圆,并为其提供40点蓝色边框:

    韦弦zhy
  • MapReduce中map并行度优化及源码分析

      一个job的map阶段并行度由客户端在提交job时决定,而客户端对map阶段并行度的规划的基本逻辑为:将待处理数据执行逻辑切片(即按照一个特定切片大小,将待...

    intsmaze-刘洋
  • Confluence 6 在升级过程中查看合并日志

    通常日志经常将会显示多个日志实例,这个实例是定义在日志的 INFO 级别的,通常格式如下:

    HoneyMoose
  • 对话“万物心选”创始人田晓萌:社区与用户的双向互动,关键品类与技术的壁垒构建

    8月19日,母婴社群电商公司“万物心选”宣布完成2000万美元B轮融资,由清新资本领投,红点资本跟投,穆棉资本担任独家财务顾问。

    庄帅
  • 手把手: 如何用R作Polar图等

    大数据文摘
  • 国内某广告SDK会从Android手机中窃取用户数据,感染App下载量过亿

    来自移动安全公司 Lookout 的研究人员最近发现,不少 Android 平台的合法 App 所用的广告 SDK 会秘密窃取用户数据,这款恶意广告 SDK 就...

    FB客服

扫码关注云+社区

领取腾讯云代金券