Python之subprocess
文章目录
subprocess
是 Python 的一个内置模块,它允许你创建新的进程,连接到它们的输入/输出/错误管道,并获取它们的返回码。这个模块的目的是提供了一种替代 os.system(),os.spawn*(),os.popen*(),popen2.
() 和 commands.() 等旧的模块和函数。
以下是 subprocess
模块中最常用的一些函数:
subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, check=False, timeout=None, text=None, encoding=None, errors=None)
这是创建和管理子进程的最简单方法。它接收一个命令行参数列表(args),并返回一个 CompletedProcess 实例。这个实例包含了运行的结果,包括标准输出、标准错误、返回码等。
subprocess.Popen(args, *, stdin=None, stdout=None, stderr=None, shell=False, check=False, timeout=None, text=None, encoding=None, errors=None)
这是一个更复杂的创建和管理子进程的方式。Popen 对象创建后,主程序不会自动等待子进程完成。我们必须调用对象的 wait() 方法,主程序才会等待。这种方式提供了更大的灵活性,但也需要更多的代码来管理。
这里有一些简单的例子来说明如何使用 subprocess
模块:
import subprocess
# 使用 subprocess.run
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE)
print(result.stdout.decode())
# 使用 subprocess.Popen
process = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE)
output, error = process.communicate()
print(output.decode())
请注意,这些例子都假设你在 Unix 或类 Unix 系统(如 Linux 或 MacOS)上运行代码。如果你在 Windows 上运行代码,你可能需要调整命令和参数。