使用Python的run()函数调用外部命令并获取输出
在Python中,我们可以使用subprocess模块中的run()函数来调用外部命令并获取输出。run()函数接受一个字符串参数,该字符串表示要执行的命令,并返回一个CompletedProcess对象,其中包含了命令的执行结果。
下面是一个使用run()函数调用外部命令并获取输出的示例:
import subprocess # 调用外部命令并获取输出 result = subprocess.run(["ls", "-l"], capture_output=True, text=True) print(result.stdout)
在上面的示例中,我们调用了ls -l命令,并获取其输出。run()函数的 个参数是一个列表,其中 个元素是要执行的命令,后续元素是命令的参数。在这里,我们执行的是ls -l命令,用于列出当前目录的文件信息。
run()函数的capture_output参数设置为True,表示我们要捕获命令的输出。而text参数设置为True,表示输出结果为文本格式。
run()函数返回的CompletedProcess对象中的stdout属性包含了命令的标准输出。我们可以将其打印出来,就可以看到ls -l命令的输出结果。
除了stdout属性,CompletedProcess对象还包含了其他属性,比如stderr用于获取命令的标准错误输出。我们可以根据需要使用这些属性来获取命令的不同输出。
另外,我们还可以通过run()函数的check参数来检查命令的返回码,并在命令执行失败时抛出异常。如果check参数设置为True,则命令返回码不为0时会抛出CalledProcessError异常。
下面是一个示例,演示如何检查命令的返回码并处理异常:
import subprocess
try:
# 调用外部命令并获取输出
result = subprocess.run(["ls", "nonexistent-file"], capture_output=True, check=True, text=True)
print(result.stdout)
except subprocess.CalledProcessError as e:
print("命令执行失败,返回码:", e.returncode)
print("命令输出:", e.stdout)
print("错误输出:", e.stderr)
在上面的示例中,我们执行了一个不存在的命令nonexistent-file。由于该命令不存在,它的执行会失败,返回码不为0。因此,run()函数会抛出CalledProcessError异常。
我们可以通过捕获该异常,并获取其属性来处理命令执行失败的情况。CalledProcessError异常中的returncode属性表示命令的返回码,stdout和stderr属性分别表示命令的标准输出和标准错误输出。
总之,使用Python的run()函数调用外部命令并获取输出是一种方便且灵活的方法。通过捕获run()函数的返回结果,我们可以轻松地获取命令的输出,并根据需要进行处理。
