python执行系统命令常用方法汇总

2018-4-9 14:43| 发布者: admin| 查看: 42| 评论: 0

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

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


  1. os.system()


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


  >>> import os


  >>> output = os.system('cat /proc/cpuinfo')


  processor : 0


  vendor_id : AuthenticAMD


  cpu family : 21


  ... ...


  >>> output # doesn't capture output


  0


  2. os.popen()


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


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


  >>> output


      <open file 'cat /proc/cpuinfo', mode 'r' at 0x7ff52d831540> 


  >>> print output.read()


  processor : 0


  vendor_id : AuthenticAMD


  cpu family : 21


  ... ...


  >>>


  3. commands模块


  >>> import commands


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


  >>> print output


  processor : 0


  vendor_id : AuthenticAMD


  cpu family : 21


  ... ...


  >>> print status


  0


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


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


  4. subprocess模块


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


  >>> import subprocess


  >>> subprocess.Popen(["ls", "-l"]) <strong># python2.x </strong> doesn't capture output


  >>> subprocess.run(["ls", "-l"]) <strong># python3.x </strong> doesn't capture output


  <subprocess.Popen object at 0x7ff52d7ee490>


  >>> total 68


  drwxrwxr-x 3 xl xl 4096 Feb 8 05:00 com


  drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Desktop


  drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Documents


  drwxr-xr-x 2 xl xl 4096 Jan 21 07:44 Downloads


  ... ...


  >>>


  以上是列举的python执行系统命令的方法,如果需要这方面的操作,可以参考一下!


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论(0)

Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.