Python 中的 subprocess.check_output

Manav Narula 2022年5月18日
Python 中的 subprocess.check_output

subprocess 模块是 Python 的一个组成部分,有助于实现并行编程。该模块可以生成新进程并使用命令行工具控制的程序。

它存储了不同的函数,可以帮助我们通过命令行工具运行命令。一个这样的函数是 Python 中的 subprocess.check_output() 函数。

本教程将演示 Python 中的 subprocess.check_output() 函数。

在 Python 中使用 subprocess.check_output()

这个函数是在 Python 2.7 中引入的。我们可以使用它在命令提示符下运行带有 Python 参数的命令。

subprocess.check_output() 函数将以字节形式返回给定命令的输出。如果函数返回非零代码,则会引发 CalledProcessError 对象。

CalledProcessError 对象有两个属性。这些是 returncodeoutput 属性。

该函数的一个简单示例如下所示。

import subprocess

print(subprocess.check_output(["echo", "Sample Message"], shell=False))

输出:

b'Sample Message\n'

我们在上面的例子中运行 echo 命令来显示一条消息。返回的输出是带有所需消息的字节字符串。

这个函数有几个参数。如命令中所见,我们可以在函数中为命令提供其参数。

除此之外,我们还有 stdinstderrshelluniversal_newlines 参数。

前三个参数是标准输入、输出和错误文件句柄。我们可以将它们的值指定为 PIPE 对象。

如前所述,subprocess 模块创建新的子进程。PIPE 常量从父进程发送或接收信息。

shell 参数可以是 TrueFalse。如果设置为 True,该命令将通过 shell 运行。

但是,不建议通过 Python 通过 shell 运行命令。当从不受信任的来源读取输入时,这可能会带来严重的安全风险,这可能会引发 shell 注入等安全威胁。

如果 shell 参数设置为 True,我们可以使用 pipes.quotes() 函数在传递的字符串中转义 shell 的空格和元字符。

universal_newlines 参数设置为 True,然后作为标准输入、输出和错误提供的对象以文本模式打开。在其他函数中,相同的参数与具有 text 参数名称的别名一起使用。

Python 3.5 引入了一个名为 subprocess.run() 的新函数。这个函数比传统的 subprocess.check_output() 方法运行命令更受欢迎;它返回一个 CompletedProcess 对象。

subprocess.run() 函数也接受许多参数,其中大部分在 subprocess.check_output() 方法中不可用。大多数这些参数都是通过接口传递的。

作者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

相关文章 - Python Subprocess