共计 1352 个字符,预计需要花费 4 分钟才能阅读完成。
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() 用于执行简单命令,能够显示执行后果,能够设置输入内容。