subprocess.check_output()
- 返回值:
subprocess.check_output()
返回命令的标准输出(stdout)。如果命令执行失败(返回非零退出码),则抛出CalledProcessError
异常。 - 使用场景:只关心命令的输出,并且想要以字符串的形式获取它
- 错误处理:如果命令执行失败,
check_output()
会抛出异常,可以通过捕获这个异常来处理错误。try: output = subprocess.check_output("dir", shell=True, text=True) print(output) except subprocess.CalledProcessError as e: print("命令执行失败")
subprocess.run()
- 返回值:
subprocess.run()
返回一个CompletedProcess
实例,该实例包含了命令的返回码、标准输出、标准错误等信息。 - 使用场景:当需要更详细地了解命令的执行情况,比如检查返回码、获取标准输出和标准错误等
- 错误处理:你可以通过检查
CompletedProcess
实例的returncode
属性来判断命令是否执行成功。如果设置了check=True
,则命令执行失败时会抛出CalledProcessError
异常。result = subprocess.run(["dir"], capture_output=True, text=True, shell=True) if result.returncode == 0: print("命令输出:") print(result.stdout) else: print("命令执行失败,返回码:", result.returncode) print("错误输出:", result.stderr)
subprocess.check_output()
更专注于获取命令的输出,并且只在命令执行失败时抛出异常。subprocess.run()
提供了更全面的信息,包括命令的返回码、输出和错误,并且可以通过设置check
参数来控制是否抛出异常。