如何使用python执行shell命令

时间:2020-02-23 14:38:27  来源:igfitidea点击:

Python是其中一个流行的编程语言之一。
如果我们使用的是Linux,那么学习它可以自动化工作流程和脚本。

Python的有用性来自其易用性及其标准库。
有了它,我们可以成功执行shell命令,这是我们今天教程的主题。

在大多数情况下,我们可能已习惯使用BASH或者BATCH文件来执行命令,但我们将能够在Python中进行。
我们将指导我们使用Python运行shell命令。

使用python执行shell命令

1. OS模块

通过Python运行shell命令的最简单和最安全的方法之一是使用os.system()。

让我们将Python文件保存为使用。

以下是我们在数据中使用它的代码。

import os
os.system('ls')

在Python文件中,我们首先导入OS模块,然后调用System方法()来传递要运行的命令。
正如我们所看到的,我们其中运行"LS"命令。
如果我们运行Python文件,那么我们将获得以下输出。 python usingos.py

使用Python OS模块运行LS命令

但是,使用OS模块非常有限。
首先,我们将无法将输出保存到变量。

要保存输出,我们需要使用OS模块使用不同的函数。
它是popen()。
它只是从命令行开辟了一个管道。
通过这样做,可以访问Python流,因此值可以存储在变量中。

让我们将新的python脚本保存为saplvalue.py

在它内部,我们需要输入以下代码。

import os
stream = os.popen('eThe value is now returned')
output = stream.read()
print (output)

2.subprocess模块

最后,我们将看看子过程模块。
如果我们认真使用Python运行shell命令,则应使用子进程方法。
我们需要3.5或者更高版本的Python版本以使用子过程模块。

但你为什么要这样做?
它是因为Subprocess在使用Python中使用shell命令时运用的很好功能。
例如,我们将能够将结果存储在变量中,并在不尝试重新发明轮子的情况下启动新过程。

让我们来看看一个更好的理解。
我们将此示例的文件命名为subproc.py。

在它内部,我们需要使用以下代码。

import subprocess
list_file_names = subprocess.run(['ls'])
print ("Here are the files %d" %list_file_names.returncode)

显示子过程模块的工作原理

代码的第一行导入子过程模块。
完成后,我们现在创建一个名为"list_file_names"的新变量,然后使用子process.run()函数。
它在列表中取出。
正如我们所看到的,我们放入列出文件和文件夹的Linux命令ls。

最后,我们使用返回码打印变量。

要将参数传递给命令,我们需要将参数作为列表中的另一个元素传递。
所以,如果要将"-l"参数传递给"ls",那么列表将如下所示: ["ls","-l"]