做为系统工程师来说,经常会用到python脚本去调用一下系统命令,现把经常使用的集中调用方法总结如下:

一,os.system(command)

在一个子shell中运行command命令,并返回command命令执行完毕后的退出状态。这个函数执行命令的结果无法保存,只能显示在标准输出。但是,命令执行是否成功的退出状态可以通过变量得到,非0即为不正常。

例:

>>> os.system('ls /tmp')

hsperfdata_root  supervisor.sock  tmp_fifo

0

>>> code=os.system('ls /tmp')

hsperfdata_root  supervisor.sock  tmp_fifo

>>> print code

0

二,os.popen(command[, mode[, bufsize]])

打开一个与command进程之间的管道,函数的返回值是一个连接到管道的文件对象,故可以对文件做读写操作(由mode决定rw,mode默认是’r',)。bufsize指定了文件期望的buffer大小,0意味着不是用buffer,1意味着line buffered(行缓冲),负值意味着使用系统默认行为,正值意味着按设定的num值开辟buffer空间;一般终端相关的设备输出用行缓冲,对文件相关输出用全缓冲;默认情况下,buffer是全缓冲,加快了文件读取速度减少了上下文切换。如果mode为’r',可以使用此函数的返回值调用read()来获取command命令的执行结果。

例:

>>> f=os.popen('ls /tmp')

>>> f.readlines()

['hsperfdata_root\n', 'supervisor.sock\n', 'tmp_fifo\n']

三,subprocess

第一种:

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

与os.system的功能相同。

第二种:

subprocess.Popen(command,shell=True)

已子进程的方式去执行命令,然后返回代表新进程的Popen对象。他可以与新建进程的输入/输出/错误管道联通,并可以获得新建进程执行的返回状态等。使用subprocess模块主要目的就是来替代之前的os,popen,commands等函数或模块。

例:

执行基本的系统命令,直接输出结果

>>> ret = subprocess.call('ls /tmp',shell=True)

hsperfdata_root  supervisor.sock  tmp_fifo

执行系统命令,但是捕捉输出

>>> f = subprocess.Popen('ls /tmp',shell=True,stdout=subprocess.PIPE)

>>> print f.stdout.readlines()

['hsperfdata_root\n', 'supervisor.sock\n', 'tmp_fifo\n']

创建2个子进程,通过管道把他们连接起来。一个进程的输出作为另一个进程的输入

>>> f = subprocess.Popen('ls -l',shell=True,stdout=subprocess.PIPE)

>>> p = subprocess.Popen('wc', shell=True, stdin=f.stdout, stdout=subprocess.PIPE)

>>> print p.stdout.readlines()

['     73     652    4161\n']

四,commands

commands模块用于执行以字符串形式指定的简单系统命令,并将其输出以字符串形式返回,仅使用于unix系统。

第一种:

getoutput(cmd)

在shell中执行cmd,返回包含命令标准输出和标准错误流的字符串。

getstatusoutput(cmd)

与getoutput类似,差别在于返回的是二元组(status,output)

例:

>>> out=commands.getoutput('ls /tmp')

>>> print out

hsperfdata_root

supervisor.sock

tmp_fifo

>>> status,out=commands.getstatusoutput('ls /tmp')

>>> print status,out

0 hsperfdata_root

supervisor.sock

tmp_fifo

python运行系统_python执行系统命令的方法相关推荐

  1. python执行系统命令的方法_python执行系统命令的方法 :os.system(),subprocess.popen(),command...

    最近接触到os.system(),subprocess.popen()和commands来执行系统命令,从网上搜索到许多,现整理如下. 1. 使用os.system("cmd") ...

  2. php禁用了所有命令执行的函数 怎么搞,PHP通过bypass disable functions执行系统命令的方法汇总...

    一.为什么要bypass disable functions 为了安全起见,很多运维人员会禁用PHP的一些"危险"函数,例如eval.exec.system等,将其写在php.in ...

  3. python模块commands执行系统命令

    上一篇中提到了执行系统命令的新利器os模块,其中有两个方法可以用来执行系统命令一个是os.popen()一个是os.system(),还有两种可以用来执行系统命令的方法一个是:python自带的com ...

  4. python执行系统命令的方法

    做为系统工程师来说,经常会用到python脚本去调用一下系统命令,现把经常使用的集中调用方法总结如下: 一,os.system(command) 在一个子shell中运行command命令,并返回co ...

  5. python调用系统_python 执行系统命令

    Python中执行系统命令常见的几种方法: (1)os.system # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 # 如果再命令行下执行,结果直接打印出来 例如: >> ...

  6. python运行命令_Python执行系统命令教程

    一.背景说明 以前就感觉进步的速度和博客的数量成正比,所以很长一段时间内想不通为什么很多博客为什么到最后很少甚至不在更新了,直到最近自己也快成为断更的一员. 这段时间其实碰到和解决了挺多典型的问题,但 ...

  7. python执行系统命令的方法:subprocess

    适用于Python3 subprocess 可以执行shell命令的相关模块和函数有: os.system os.spawn os.popen –废弃 popen2.* –废弃 commands.* ...

  8. Python执行系统命令的方法 os.system(),os.popen(),commands

    最近在做那个测试框架的时候发现 Python 的另一个获得系统执行命令的返回值和输出的类. 最开始的时候用 Python 学会了 os.system() 这个方法是很多比如 C,Perl 相似的. o ...

  9. 安装python 的包控制mysql的Python脚本与执行系统命令的Python脚本

    安装python 的包 python 有很多的第三方软件包, 提供了 标准库中没有的功能. python 的官方支持的软件包的网站: PyPI · The Python Package Index 安 ...

  10. python三级_Python三级目录展示方法

    要求: 1.三级菜单 2.可依次选择进入各子菜单,选择序号进入目录 3.输入b返回上级目录,q退出更改目录 代码实现: #!/bin/env python #!--*--coding:utf-8 -- ...

最新文章

  1. micropython esp8266+ssd1306(OLED) 显示中文(示例)
  2. 元素在父元素内垂直居中的思路
  3. 想成领袖?先瞄准老板身边的位置
  4. 大数据分析优劣势有哪些
  5. 面试Go语言开发?让这本书帮你感动面试官!
  6. 基于SSM的家庭理财系统
  7. 【安全知识分享】重磅|消防控制室培训.ppt(附下载)
  8. 什么是关键字驱动框架?
  9. 游戏编辑器制作(6)
  10. 直播有什么新的互动玩法?
  11. 大厂高频面试题之Java内存区域分布
  12. java svfrclient.jar_jp.co.fit.vfreport.SvfrClient.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家...
  13. Swi-Prolog借助XPCE可视化-显示图片
  14. 《阿信》讲述了日本着名的百货连锁企业八佰伴创始人艰苦的过程
  15. 电脑开机直接进入桌面
  16. arch linux 防火墙,Arch linux操作系统之Firewalld防火墙安装使用
  17. unity android 性能分析,Unity Profiler 性能分析
  18. 淮北师范大学c语言试卷,2016年淮北师范大学物理与电子信息学院高级语言程序设计(加试)之C语言程序设计复试笔试仿真模拟题...
  19. 好工具推荐系列:Linux远程连接,终端工具,SSH和SFTP
  20. RabbitMQ实战笔记

热门文章

  1. 12.企业安全建设指南(金融行业安全架构与技术实践) --- 移动应用安全
  2. 15.Linux/Unix 系统编程手册(上) -- 文件属性
  3. 14. 随需应变:网站的可扩展架构
  4. 2. sales quote merge before
  5. 计算机动画原理课程设计,Flash动画优化的原理和常用优化方式,毕业论文,课程设计,PPT,开发报告,外文翻译 - 论文助手...
  6. css中的伪元素:before :after与jQuery中的.before .after的区别
  7. Java 平衡二叉树和AVL
  8. websocket 初识
  9. Flume案例之采集特定目录的数据到HDFS
  10. NLog.config