乐趣区

关于python:python调用外部命令的四种方式

python 提供了几种调用 shell 的命令,然而每个命令的性能不同,须要具体理解下,才能够比拟不便的来应答不同的需要。

os.system

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

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

示例:

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

os.popen

os.popen() 办法不仅执行命令而且返回执行后的信息对象 ( 罕用于须要获取执行命令后的返回信息),是通过一个管道文件将后果返回。通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的操作能够看到执行的输入。

示例:

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

commands

commands 模块是一个可执行 shell 命令的库,是 python 的内置模块

示例:

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 是一个功能强大的子过程治理模块,当执行命令的参数或者返回中蕴含了中文文字,那么倡议应用 subprocess。

subprocess.Popen() 的参数解释

应用 subprocess.call()

subporcess 模块还有一个 call() 办法,能够用于更加简略的调用外部命令。

subprocess.call (*popenargs , **kwargs)

call 的应用办法和 Popen 基本一致,没有太大的区别,在这里只是多介绍一种应用形式。

示例:

import subprocessres = subprocess.Popen('cat /etc/passwd', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) # 应用管道# print res.stdout.read()  # 规范输入 for line in res.stdout.readlines():    print lineres.stdout.close()         # 敞开 

总结:

综上,除了 os.system 之外,其余的命令形式均能够获取执行之后的返回后果。

os.system() 用于简略执行命令,能够显示执行后果。

os.popen() 用于简略执行命令,不能显示执行后果,能够通过变量返回执行后果。

subprocess.Popen() 用于执行简单命令,能够显示执行后果,能够设置输入内容。

subprocess.call() 用于执行简单命令,能够显示执行后果,能够设置输入内容。

退出移动版