from subprocess import check_output含义及check_output作用解析
代码行
from subprocess import check_output作用说明 为什么要引入subprocess库
- 写Python(包括在Jupyter Notebook里写代码)的时候,经常会需要调用系统自带的命令行工具,比如查pip安装的包、拉git记录、调用系统自带的小工具,Python内置的基础语法没法直接、安全地完成这类跨平台的外部命令调用。早年大家用的
os.system、os.popen这类老方法功能零散,很容易出进程卡死、安全漏洞、跨平台不兼容的问题。 subprocess是Python官方内置的标准库,不需要额外安装,专门用来统一管理外部进程、和系统命令做交互,能规范处理命令执行的返回状态、输出内容、报错信息,是目前Python调用外部命令的官方推荐方案,这就是引入这个库的核心原因。
check_output的具体功能
这个函数是subprocess库最常用的方法之一,核心作用非常好懂:运行你指定的外部系统命令,直接把命令执行后打印到终端的正常输出内容抓取回来,作为返回值传给你后续的代码用。
它的几个核心特性:
- 调用时只需要把要执行的命令按列表格式传参即可,比如要查当前目录的文件列表,Windows传
["dir"]、类Unix系统传["ls"]就行 - 默认会阻塞等待命令完全执行完,才会运行后续代码,不会出现命令还没跑完就拿结果的问题
- 如果命令执行出错(比如命令写错、权限不足、命令运行时报错),它会直接抛出明确的异常,不会静默失败导致后续代码拿到错误结果
- 默认返回的内容是字节格式,要转成普通可读字符串,只需要在结果后面加
.decode('utf-8')处理即可
举个Jupyter里最常见的用法示例:
from subprocess import check_output # 查询当前环境下pandas的安装信息 pandas_info = check_output(["pip", "show", "pandas"]).decode("utf-8") print(pandas_info)
内容的提问来源于stack exchange,提问作者gupta07
相关产品推荐
相关产品推荐

