在Python中运行外部命令的方法——run()函数详解
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中运行外部命令的一个常用方法。它可以方便地运行外部命令,并获取其输出结果。在使用时,我们可以根据需要指定一些参数,如stdout、stderr、shell和check等来实现更复杂的功能。
