• Python—执行系统命令的四种方法(os.system、os.popen、commands、subprocess)


    一、os.system方法

    这个方法是直接调用标准C的system() 函数,仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息。

    os.system(cmd)的返回值。如果执行成功,那么会返回0,表示命令执行成功。否则,则是执行错误。

    使用os.system返回值是脚本的退出状态码,该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码。

    os.system()返回值为0        linux命令返回值也为0。

    os.system()返回值为256,十六位二进制数示为:00000001,00000000,高八位转成十进制为 1        对应   linux命令返回值 1。

    os.system()返回值为512,十六位二进制数示为:00000010,00000000,高八位转成十进制为 2        对应   linux命令返回值 2。

    import os
    result = os.system('cat /etc/passwd')
    print(result)      # 0

    二、os.popen方法

    os.popen()方法不仅执行命令而且返回执行后的信息对象(常用于需要获取执行命令后的返回信息),是通过一个管道文件将结果返回。通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的操作可以看到执行的输出。

    import os
    result = os.popen('cat /etc/passwd')
    print(result.read())
    

    三、commands模块

    import commands
    
    status = commands.getstatus('cat /etc/passwd')
    print(status)
    output = commands.getoutput('cat /etc/passwd')
    print(output)
    (status, output) = commands.getstatusoutput('cat /etc/passwd')
    print(status, output)
    

    四、subprocess模块

    Subprocess是一个功能强大的子进程管理模块,是替换os.system ,os.spawn* 等方法的一个模块。

    当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess。

    import subprocess
    res = subprocess.Popen('cat /etc/passwd', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) # 使用管道
    # print res.stdout.read()  # 标准输出
    for line in res.stdout.readlines():
        print line
    res.stdout.close()         # 关闭

    五、总结:

    os.system:获取程序执行命令的返回值。

    os.popen: 获取程序执行命令的输出结果。

    commands:获取返回值和命令的输出结果。

    https://www.jb51.net/article/142787.htm

  • 相关阅读:
    建议初创团队起初也要构建分布式应用
    PHP对大文件的处理思路
    php高级研发或架构师必了解---面试题系列
    数据库schema设计与优化
    大型web系统数据缓存设计
    PHP正则表达式
    PHP 生成图片缩略图函数
    PHP与Memcached服务器交互的分布式实现源码分析
    SOA面向服务架构——SOA的概念
    php中socket的使用
  • 原文地址:https://www.cnblogs.com/liuhaidon/p/12077007.html
Copyright © 2020-2023  润新知