zoukankan      html  css  js  c++  java
  • python执行系统命令的几种方法

    (1) os.system 

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

      import os

     os.system('cat /proc/cupinfo')

    (2) os.popen 

       该方法不但执行命令还返回执行后的信息对象,是通过一个管道文件将结果返回。

       output = os.popen('cat /proc/cpuinfo')

       print output.read()

    (3)使用模块commands模块

        import commands

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

       print status,output

    注意1:在类unix的系统下使用此方法返回的返回值(status)与脚本或命令执行之后的返回值不等,这是因为调用了os.wait()的缘故,

              具体原因就得去了解下系统wait()的实现了。需要正确的返回值(status),只需要对返回值进行右移8位操作就可以了。

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

    (4) 使用模块subprocess

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

     Class subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, 

                                      stderr=None, preexec_fn=None,  close_fds=True, shell=False, 

                                     cwd=None, env=None, universal_newlines=False, startupinfo=None, 

                                  creationflags=0, restore_signals=True, start_new_session=False, pass_fds=())

    有丰富的参数可以进行配置,可供我们自定义的选项多,灵活性高。之前我使用os.system的时候遇到文件描述符被子进程继承的问题,后来通过close_fds = False 这个参数来解决的

    转载:https://www.cnblogs.com/zflibra/p/4180796.html

  • 相关阅读:
    C#获取windos 登录用户信息
    像我这样的人
    只道情深,奈何缘浅(雪之轻裳搜集)
    如果我死了,还剩下什么(雪之轻裳)
    嫁给爱情 还是嫁给现实(搜集)
    排名前 16 的 Java 工具类
    java 获取当前屏幕截图
    转:零售数据观(一):如何花30分钟成为一个标签设计“达人”
    转:数据指标系列:电商数据分析指标体系总结V1.0
    转:领域模型中的实体类分为四种类型:VO、DTO、DO、PO
  • 原文地址:https://www.cnblogs.com/shengulong/p/8245181.html
Copyright © 2011-2022 走看看