1 subprocess.run
subprocess.run 是 Python 中用于运行外部命令或程序的一个函数,它是 subprocess 模块的一部分。这个函数在 Python 3.5 中被引入,用于替代旧的 subprocess.call 和一些其他的 subprocess 函数。subprocess.run 提供了一种更简洁和推荐的方式来启动子进程,并等待其完成。
基本用法
import subprocess# 运行一个外部命令,比如 'ls'(在 Linux 或 macOS 上列出目录内容)
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)# 打印命令的输出
print(result.stdout)# 检查命令的退出状态
if result.returncode == 0:print("Command succeeded")
else:print(f"Command failed with exit code {result.returncode}")
参数说明
args:命令及其参数,通常是一个列表,例如 [‘ls’, ‘-l’]。如果是一个字符串,它会被 shell 解析(不推荐这样做,因为存在安全风险)。
capture_output:如果设置为 True,则会捕获标准输出和标准错误,并可以通过 result.stdout 和 result.stderr 访问。
text:如果设置为 True,会将捕获的输出以字符串形式返回,而不是字节。
shell:如果设置为 True,则通过 shell 运行命令(不推荐,因为存在安全风险)。默认情况下为 False。
check:如果设置为 True,并且命令返回非零退出状态,则会引发 CalledProcessError 异常。
示例
捕获标准输出和错误
result = subprocess.run(['ls', '-l', '/nonexistent_directory'], capture_output=True, text=True, check=True)
print(result.stdout)
print(result.stderr) # 打印错误信息