zoukankan      html  css  js  c++  java
  • Python中执行系统命令的四种方法

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

    import os
    print(os.system('date'))
    

    在这里插入图片描述
    由于python3默认采用了UTF-8编码,而WIN8的CMD窗口采用的是GBK编码,导致了编码不同。

    但是,如果简单的通过encode('gbk')之类的方法,不能解决根本问题。

    尤其是当我们根本不是使用print命令来输出,而是控制台默认输出的情况下,是没办法修改os.system的编码格式的,因为os.system执行命令返回的并不是命令中出现的文本,而是一个int,为0时表示成功,为1时表示异常。

    Pycharm下的解决方法:
    在这里插入图片描述
    在这里插入图片描述
    二、os.popen方法

    os.popen()方法不仅执行命令而且返回执行后的信息对象(常用于需要获取执行命令后的返回信息),是通过一个管道文件将结果返回。

    import os
    os.popen()
    

    在这里插入图片描述
    在这里插入图片描述
    三、commands模块

    -- 说明
    getoutput 获取执行命令后的返回信息
    getstatus 获取执行命令的状态值(执行命令成功返回数值0,否则返回非0)
    getstatusoutput 获取执行命令的状态值以及返回信息

    在这里插入图片描述
    注意1:在类unix的系统下使用此方法返回的返回值(status)与脚本或命令执行之后的返回值不等,这是因为调用了os.wait()的缘故,具体原因就得去了解下系统wait()的实现了。需要正确的返回值(status),只需要对返回值进行右移8位操作就可以了。

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

    四、subprocess模块

    subprocess模块运用对线程的控制和监控,将返回的结果赋于一变量,便于程序的处理。

    subprocess模块是python从2.4版本开始引入的模块。主要用来取代 一些旧的模块方法,如os.system、os.spawn、os.popen、commands.*等。subprocess通过子进程来执行外部指令,并通过input/output/error管道,获取子进程的执行的返回信息。
    在这里插入图片描述

  • 相关阅读:
    Nginx负载均衡配置实例详解
    网络性能排查
    tensorflow、cuda、cudnn之间的版本对应关系
    PyPI可以使用的几个国内源
    Ceres配置(vs2013+Win10)
    vs2013+opencv3.2配置
    Ceres Solver 在win8+vs2013环境下的安装
    51Nod-1006 最长公共子序列Lcs
    Qt中OpenGL模块下将图片转化为纹理,并传入shader中
    harris角点检测
  • 原文地址:https://www.cnblogs.com/djdjdj123/p/11814341.html
Copyright © 2011-2022 走看看