📅  最后修改于: 2023-12-03 14:46:18.070000             🧑  作者: Mango
在Python中,我们可以使用subprocess
模块来获取命令的输出到变量中。这个模块提供了一个高级接口来启动子进程,并与其进行交互。
要获取命令的输出,我们可以使用subprocess.check_output
函数。该函数会执行指定的命令,并返回该命令的输出。
import subprocess
output = subprocess.check_output(["ls", "-l"])
print(output.decode("utf-8"))
上面的代码会执行ls -l
命令,并将其输出保存到output
变量中。稍后我们使用decode()
方法来将输出转换为字符串,并打印出来。
有时候,我们需要知道执行命令的状态码。状态码是一个用来指示命令是否执行成功的整数。在Unix-like系统中,状态码为0表示成功,而其他数值则表示失败。
要获取命令的状态码,我们可以使用subprocess.run
函数。该函数会执行指定的命令,并返回一个CompletedProcess
对象。我们可以通过该对象的returncode
属性来获取命令的状态码。
import subprocess
result = subprocess.run(["ls", "-l"])
print(result.returncode)
上面的代码会执行ls -l
命令,并保存返回的CompletedProcess
对象到result
变量中。稍后我们使用returncode
属性来获取命令的状态码,并打印出来。
下面是一个完整的示例,该示例演示了如何获取命令的输出和状态码。
import subprocess
try:
# 获取命令的输出
output = subprocess.check_output(["ls", "-l"])
print(output.decode("utf-8"))
# 获取命令的状态码
result = subprocess.run(["ls", "-l"])
print(result.returncode)
except subprocess.CalledProcessError as e:
print(e)
在上面的示例中,我们使用了try
/except
块来处理check_output()
函数抛出的异常。如果命令执行失败,该函数会引发CalledProcessError
异常。