欢迎访问宙启技术站
智能推送

使用Python的run()函数执行系统命令并获得输出结果

发布时间:2023-12-27 18:38:19

在Python中,可以使用subprocess模块中的run()函数来执行系统命令并获取其输出结果。run()函数是Python 3.5及更高版本中的一个方法,它可以简化与子进程的交互。

下面是一个使用run()函数执行系统命令的例子:

import subprocess

# 执行系统命令
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)

# 打印输出结果
print(result.stdout)

在上面的例子中,我们执行了ls -l命令,将其输出结果存储在result变量中。stdout参数用于指定将输出结果存储在哪里,subprocess.PIPE表示存储在管道中。stderr参数用于指定错误输出的地方,subprocess.PIPE表示存储在管道中。universal_newlines参数用于指定输出结果的格式,设置为True时,输出结果将以文本格式返回。

我们可以使用result.stdout属性来获取命令的输出结果,使用result.stderr属性来获取错误输出结果。可以将这些结果用于后续的处理或打印出来。

除了获取命令的输出结果,run()函数还有其他一些常用的功能。下面是一些常用的参数和用例:

1. shell参数:默认情况下,subprocess.run()函数使用无shell上下文的方式运行命令。如果需要在shell上下文中运行命令,可以将shell参数设置为True

subprocess.run('mkdir new_directory', shell=True)

2. check参数:默认情况下,如果命令返回非零状态码,run()函数不会引发异常,可以通过检查result.returncode属性来获取状态码。如果将check参数设置为True,则可以捕获到状态码非零的情况,并引发CalledProcessError异常。

try:
    subprocess.run('unknown_command', check=True, shell=True)
except subprocess.CalledProcessError as e:
    print(f"Command returned non-zero exit status {e.returncode}")

3. input参数:可以使用input参数将输入提供给命令。该参数接受一个字符串或字节对象。

subprocess.run(['grep', 'python'], input=b'Hello
python
World
', stdout=subprocess.PIPE)

以上是使用run()函数执行系统命令并获取输出结果的一些示例。使用subprocess模块的run()函数可以方便地与子进程进行交互,执行系统命令并获取其输出结果。