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

在Python中运行外部命令的方法——run()函数详解

发布时间:2023-12-27 18:37:29

Python提供了多种运行外部命令的方法,其中最常用的一个就是使用subprocess模块中的run()函数。run()函数可以方便地运行一个外部命令,并获取其输出结果。

首先,我们需要导入subprocess模块:

import subprocess

接下来,我们可以使用run()函数运行外部命令。run()函数的基本用法如下:

subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None)

其中,args是一个包含外部命令及其参数的列表或字符串。

例如,如果我们要运行一个简单的外部命令ls -l,可以这样写:

subprocess.run(["ls", "-l"])

这个命令会列出当前目录下的文件和文件夹,并将结果打印到终端。

run()函数还有一些常用的参数:

- stdout:指定标准输出的目标,可以是一个文件对象或者一个整数。如果设置为subprocess.PIPE,表示将输出保存到一个管道中。

- stderr:指定标准错误输出的目标,可以是一个文件对象或者一个整数。

- shell:是否通过shell来执行命令。如果设置为True,则可以使用shell的语法,例如使用|管道符号。

- check:如果设置为True,则在命令执行失败时会抛出一个CalledProcessError异常。

下面是一个使用run()函数运行外部命令的例子:

import subprocess

# 运行一个简单的外部命令并获取结果
result = subprocess.run(["ls", "-l"], capture_output=True, text=True)
print(result.stdout)

# 运行一个复杂的外部命令并检查执行结果
try:
    subprocess.run("command_not_exist", check=True)
except subprocess.CalledProcessError as e:
    print(e.returncode)
    print(e.stderr)

运行结果:

total 8
-rw-r--r--  1 user  group  242 Jan  1 12:34 script.py

Command 'command_not_exist' returned non-zero exit status 127.

在上面的例子中,我们首先使用run()函数运行了一个外部命令ls -l,并使用capture_output=True来将命令的输出结果捕获到一个字符串中,然后通过print(result.stdout)打印出来。

接着,我们使用run()函数运行了一个不存在的命令command_not_exist,并将check=True设置为True。这样,如果命令执行失败,就会抛出一个CalledProcessError异常,我们可以通过该异常对象的属性来获取返回码和标准错误输出。

总结一下,run()函数是Python中运行外部命令的一个常用方法。它可以方便地运行外部命令,并获取其输出结果。在使用时,我们可以根据需要指定一些参数,如stdoutstderrshellcheck等来实现更复杂的功能。