zoukankan      html  css  js  c++  java
  • python:调用bash

    利用os模块

    python调用Shell脚本,有三种方法:

    • os.system(cmd)返回值是脚本的退出状态码
    • os.popen(cmd)返回值是脚本执行过程中的输出内容
    • commands.getstatusoutput(cmd) 返回(status, output)

     http://www.jb51.net/article/55327.htm

    1. os.system(command)

        此函数会启动子进程,在子进程中执行command,并返回command命令执行完毕后的退出状态,如果command有执行内容,会在标准输出显示。这实际上是使用C标准库函数system()实现的。

        缺点:这个函数在执行command命令时需要重新打开一个终端,并且无法保存command命令的执行结果。

    实例:os.system('ls -l *')

    2. os.popen(command,mode)

    打开一个与command进程之间的管道。这个函数的返回值是一个文件对象,可以读或者写(由mode决定,mode默认是’r')。如果mode为’r',可以使用此函数的返回值调用read()来获取command命令的执行结果。

    os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容。实际使用时视需求情况而选择。

    output = os.popen('cat /proc/cpuinfo')
    print output.read()
    tmp = os.popen('ls -l *').readlines()

    3. commands.getstatusoutput(command)

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

    使用os.popen()函数执行command命令并返回一个元组(status,output),分别表示command命令执行的返回状态和执行结果。对command的执行实际上是按照{command;} 2>&1的方式,所以output中包含控制台输出信息或者错误信息。output中不包含尾部的换行符。

    (status, output) = commands.getstatusoutput('cat /proc/cpuinfo')
    print status, output

    4. subprocess模块

    此模块在python2.4中初次亮相,其中集中了关于进程的诸多操作,其中的call()完全替代了system(),而popen()被更为丰富的Popen类替代;

    总结:python提供了十分完善的调用shell命令的功能,在实战中,我碰到的问题,有system和popen基本可全部搞定;

  • 相关阅读:
    项目上线之期初数据调整
    系统升级时,数据库脚本执行注意事项,血的教训
    数据精度问题的处理
    系统发布说明文档
    SQLServer中数据库文件的存放方式,文件和文件组
    数据库的持续集成和版本控制
    SQL Server 远程链接服务器详细配置【转载】
    批处理中的IF ERRORLEVEL
    asp.net用url重写URLReWriter实现任意二级域名
    关于excel导入access问题(已解决)
  • 原文地址:https://www.cnblogs.com/daduryi/p/6856249.html
Copyright © 2011-2022 走看看