天天看点

python 执行shell_Python脚本执行Shell命令

欢迎,来自IP地址为:180.122.153.228 的朋友

Python是一款非常出色的脚本语言,越来越多的系统管理员开始使用Python将日常工作自动化。

由于系统管理工作多为执行Linux命令,通过Python脚本来执行系统命令对于管理员来说帮助巨大。

本教程将演示使用Python脚本来执行Shell命令的并获得命令执行结果的两种方法。

使用Python的os模块来执行Shesll命令

我们首先创建一个Python脚本”prog.py”,然后在脚本中添加如下内容:

import os

myCmd = 'ls -la'

os.system(myCmd)

脚本首先引入os模块,然后定义一下Shell命令字符串,最后使用os模块的system方法执行该命令。系统输出内容会同样通过该方法回显给用户。执行示意图如下:

python 执行shell_Python脚本执行Shell命令

执”prog.py”的输出结果同执行”ls -la”命令的结果是一致的,表示该命令已经成功执行。

当然,如果想将输出内容重定向到文件中,对于脚本内容修改如下:

import os

myCmd = 'ls -la > out.txt'

os.system(myCmd)

当然,这并不是通过Python脚本进行的输出重定向,而是利用了Shell本身的功能。

对于命令字符串的定义,也可以采用如下方式:

import os

myCmd = os.popen('ls -la').read()

print(myCmd)

以上脚本的输出结果同之前脚本的输出结果是一致的。

使用Python的subprocess模块来执行Shesll命令

一个相对比较轻量级的执行Shell命令的方法是使用subprocess模块。

如果仅仅执行Shell命令而不使用任何选项和参数,则可以采用如下方式执行命令:

import subprocess

subprocess.call("ls")

如果执行的命令含有参数或选项,那么需要将命令和选项以如下方式置于链表中供”subprocess.call”方法调用:

import subprocess

subprocess.call(["ls", "-l", "."])

最后,如果想将输入内容重定向,可以使用不同于Shell重定向的方法,由”subprocess”模块自行完成。首先使用模块的Popen函数,产生一个输出对象,然后使用该对象的”communicate()”获取对应输出内容,最后将结果打印出来。示例代码如下:

import subprocess

MyOut = subprocess.Popen(['ls', '-l', '.'],

stdout=subprocess.PIPE,

stderr=subprocess.STDOUT)

stdout,stderr = MyOut.communicate()

print(stdout)

print(stderr)

python 执行shell_Python脚本执行Shell命令

可以看到,程序输出了标准输出和标准错误的内容(None),并且全部输出重定向是由脚本自行完成。

以上就是Python脚本执行Shell命令的两种方法。