做为系统工程师来说,经常会用到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

转载于:https://blog.51cto.com/leejia/1439031

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

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

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

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

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

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

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

  4. 使用Python执行系统命令方法

    Python是一款操作简单的编程语言,内置丰富的库,能够很容易的实现强大的功能,在使用Python进行框架搭建时,往往需要用到Python执行系统命令,一些开发人员对此不熟悉,以下是具体的操作方法: ...

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

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

  6. python执行系统命令后获取返回值的几种方式集合

    第一种情况 os.system('ps aux') 执行系统命令,没有返回值 第二种情况 result = os.popen('ps aux') res = result.read() for lin ...

  7. 【初学】python执行系统命令四种方法比较

    Python中执行系统命令常见的几种方法有 注意:以下实例代码在Python3.5下运行通过. 一.os.system方法 os.system(cmd) 在子终端运行系统命令,可以获取命令执行后的返回 ...

  8. python常用指令-日常整理python执行系统命令的常见方法(全)

    具体内容如下: 1 os.system 例如 ipython中运行如下命令,返回运行状态status os.system('cat /etc/passwdqc.conf') min=disabled, ...

  9. Python执行系统命令的四种方法

    一.os.system方法 在子终端运行系统命令,可以获取命令执行后的返回信息以及执行返回的状态.执行后返回两行结果,第一行是结果, 第二行是执行状态信息,如果命令成功执行,这条语句返回0,否则返回1 ...

最新文章

  1. 天线决定接受频率_对讲机天线到底有多重要?通讯效果好不好要靠它!
  2. java程序设计颜志军_JSP 自定义标签之一 简单实例
  3. anaconda 命令
  4. ajax post提交数据_详解Ajax异步加载
  5. Spring 事务相关及@Transactional的使用建议
  6. sqlserver可视化工具_数据分析之基础分析工具篇(修订版)
  7. 安卓音频输出采样率_如何调好OBS Studio的音频设置 进阶篇
  8. 面向对象练习——校园管理系统
  9. 系统自带不起眼但很强杀毒工具
  10. 惠普计算机如何改启动,惠普台式电脑u盘启动BIOS怎么设置
  11. this product is covered by one or more of the following
  12. HDMI的DDC是什么
  13. 标准SPI、DUAL SPI、Quad SPI;NorFlash、NandFlash、eMMC闪存的比较与区别
  14. latex段落悬挂缩进_使用正则表达式在Java中悬挂缩进段落
  15. 微信吸粉技巧:微信群怎么玩?
  16. 比SQL还好用,又一门国产数据库语言诞生了
  17. 【技术类】Landsat 7 ETM+影像条带去除妙招
  18. php mysql图片存储_PHP-mysql存储照片的两种方式
  19. 如何在PC桌面上添加便笺
  20. 一套适用于所有老板的营销方案,让他一个月就卖出3780箱红酒!

热门文章

  1. leetcode 214. 最短回文串 解题报告
  2. Hadoop的改进实验(中文分词词频统计及英文词频统计)(1/4)
  3. 通讯业2月网络广告投放环比增33% 联通居首位
  4. 80后的网上创业生涯:想得到做得到
  5. 大厂产品专家是怎么做项目的?
  6. 产品经理第一课(北京站)首波名单放榜啦!
  7. 【干货】周鸿祎谈雷军:能不能All In是一个核武器
  8. 代表中国为世界做出探索,杭州城市大脑获IDC亚太区智慧城市大奖
  9. nexus代理地址整理
  10. javax.mail 发送