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 >>> 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"])# python2.xdoesn't capture output >>> subprocess.run(["ls", "-l"])# python3.xdoesn't capture output>>> total 68 drwxrwxr-x 3 xl xl 4096 Feb8 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 ...... >>>


    推荐阅读