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
对象有两个属性。这些是 returncode
和 output
属性。
该函数的一个简单示例如下所示。
import subprocess
print(subprocess.check_output(["echo", "Sample Message"], shell = False))
输出:
b'Sample Message\n'
我们在上面的例子中运行 echo
命令来显示一条消息。返回的输出是带有所需消息的字节字符串。
这个函数有几个参数。如命令中所见,我们可以在函数中为命令提供其参数。
除此之外,我们还有 stdin
、stderr
、shell
和 universal_newlines
参数。
前三个参数是标准输入、输出和错误文件句柄。我们可以将它们的值指定为 PIPE
对象。
如前所述,subprocess
模块创建新的子进程。PIPE
常量从父进程发送或接收信息。
shell
参数可以是 True
或 False
。如果设置为 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 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