📜  python bash 命令 - Python (1)

📅  最后修改于: 2023-12-03 15:04:04.234000             🧑  作者: Mango

Python 中与 Bash 命令的交互

Python 是一种通用编程语言,可以在 Unix/Linux 系统上运行 Bash 命令。Python 的 subprocess 模块可以在 Python 中调用 Bash 命令。在本文章中,我们将讨论如何在 Python 中调用 Bash 命令来增强程序的功能。

调用 Bash 命令

要调用 Bash 命令,请使用 Python 内置的 subprocess 模块。使用 subprocess.call() 函数可以调用 Bash 命令。

import subprocess

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

在上面的代码中,我们调用了 ls -l 命令。这个命令会列出当前目录的所有文件和文件夹,并返回一个类似于 Bash 终端的输出。

调用 Bash 脚本

有时候,我们需要一次运行多个 Bash 命令。这时候,我们可以将多个命令写入一个 Bash 脚本,并使用 Python 调用这个脚本。

import subprocess

subprocess.call(['bash', '/path/to/my_script.sh'])

在上面的代码中,我们调用了一个名为 my_script.sh 的 Bash 脚本。

同步调用和异步调用

调用 Bash 命令时,subprocess 模块提供了两种方式:同步调用和异步调用。

同步调用在 Python 中调用 Bash 命令,并等待返回值,直到 Bash 命令执行完毕之后,Python 程序会继续执行。这种方式适用于短期任务和需要等待结果的任务。

import subprocess

output = subprocess.check_output(['echo', 'Hello World'])
print(output)

在上面的代码中,我们调用了 echo 命令,并将输出存储在 output 中。然后,我们打印了 output。因为 echo 命令的输出是 Hello World,所以在 Python 中打印的也是 Hello World

异步调用在 Python 中调用 Bash 命令,但不会阻塞 Python 程序的执行。相反,Python 程序会继续运行,直到 Bash 命令执行完毕。

import subprocess

p = subprocess.Popen(['echo', 'Hello World'], stdout=subprocess.PIPE)
output, err = p.communicate()
print(output)

在上面的代码中,我们使用 Popen 函数异步调用 echo 命令。输出被保存在 output 变量中,并打印到控制台。

总结

在 Python 中调用 Bash 命令可以让我们访问 Bash 命令行的强大功能。使用 subprocess 模块,我们可以轻松地在 Python 中调用 Bash 命令。传递命令和参数的方式和在 Bash 终端中一样。同步调用和异步调用提供了 Python 程序与 Bash 命令的不同交互方式。