Python 如何调用 Linux 命令
1. 引言
Python 作为一种通用的编程语言,具有丰富的库和模块,可以用于各种不同的应用场景。其中之一就是通过 Python 代码来调用和执行 Linux 命令。本文将详细介绍如何使用 Python 调用 Linux 命令,包括使用 os
模块、subprocess
模块以及使用第三方库 fabric
。
2. 使用 os
模块
Python 的 os
模块提供了一种简单的方法来与操作系统进行交互。它包含了执行系统命令的函数,可以方便地调用 Linux 命令。下面是一个简单的例子,演示了如何使用 os.system()
函数来调用 Linux 命令。
在上面的例子中,我们使用 os.system('ls -l')
来执行 ls -l
命令,它会在控制台中显示命令的输出结果。而使用 os.popen('ls -l').read()
可以获得命令的执行结果,并将其保存到一个变量中进行后续处理。
值得注意的是,os.system
函数返回的是命令的执行状态码,并不是命令的输出结果。如果命令执行成功,它会返回 0,否则返回非零值。
3. 使用 subprocess
模块
subprocess
模块提供了更丰富和灵活的方法来调用和执行 Linux 命令。它可以替代 os.system()
函数,并提供更多的控制选项。下面是一个使用 subprocess
模块调用 Linux 命令的示例代码:
上述代码中,我们使用 subprocess.call(['ls', '-l'])
来调用 ls -l
命令,并使用 subprocess.check_output(['ls', '-l'])
获取命令的输出结果。
subprocess.call()
函数与 os.system()
函数类似,可以调用 Linux 命令并在控制台中显示命令的输出结果。而 subprocess.check_output()
函数则可以获得命令的输出结果,并将其保存到一个变量中。
需要注意的是,subprocess.call()
函数返回的是命令的返回码,而 subprocess.check_output()
函数返回的是命令的输出结果。在 Python 3 中,输出结果是一个字节串,需要通过 decode()
方法进行解码,才能得到可读的字符串。
4. 使用 fabric
库
fabric
是一个用于自动化部署和系统管理的 Python 库,它提供了更高级的接口来调用和执行 Linux 命令。可以通过在 Python 代码中编写任务函数的方式,实现对远程主机的批量操作。下面是一个使用 fabric
库的示例代码:
上面的代码中,我们首先使用 Connection
类连接到远程主机。然后,使用 conn.run('ls -l')
调用 ls -l
命令,并通过 result.stdout
获取命令的输出结果。
fabric
库提供了许多其他功能,例如上传和下载文件、远程执行 Python 代码等。详情可以参考 fabric 官方文档。
5. 总结
本文介绍了三种不同的方法来使用 Python 调用和执行 Linux 命令。通过 os
模块和 subprocess
模块,可以在本地操作系统上执行命令,并获取命令的输出结果。而通过 fabric
库,可以实现对远程主机的批量操作。选择使用哪种方法取决于具体的需求和场景。