pythonsubprocess库
- 创业
- 2025-08-29 06:18:02

subprocess
subprocess 是 Python 标准库中的一个模块,用于创建和管理子进程。它允许你在 Python 程序中执行外部命令、调用其他程序,并与这些程序进行交互。subprocess 模块提供了丰富的功能,可以替代一些旧的模块和函数,如 os.system()、os.spawn*()、os.popen() 等。
主要功能 * 执行外部命令:subprocess 可以启动一个新的进程来执行外部命令。 * 与子进程交互:你可以通过 subprocess 与子进程的标准输入、输出和错误流进行交互。 * 获取命令的输出:你可以捕获子进程的输出,并在 Python 程序中使用。 * 控制子进程:你可以等待子进程完成、检查其返回码,甚至终止子进程。 常见函数 subprocess.run(): 这是subprocess模块中最常用的函数之一。它用于运行一个命令,并等待其完成,返回一个CompletedProcess对象,包含命令的执行结果。 核心参数 args(必需参数) 类型:str 或 序列(如 list) 作用:指定要执行的命令shell 类型:bool 默认:Flase 作用:是否通过系统shell执行命令 注意: Ture时可直接使用管道符等特性存在安全风险(避免拼接用户输入) subprocess.run(["ls", "-l"]) # 推荐方式(安全) subprocess.run("ls -l", shell=True) # 字符串形式需配合 shell=True 输入输出流控制 stdout/stdin/stdeer 类型:文件描述符或subprocess.PIPE/DEVNULL 特殊值: subprocess.PIPE # 捕获输出subprocess.DEVNULL # 丢弃输出subprocess.STDOUT # 将 stderr 合并到 stdout capture_output 类型:bool 默认:Flase 简写:stdout=subprocess.PIPE, stderr=subprocess.PIPE * capture_output=True 等效于同时设置 stdout=subprocess.PIPE stderr=subprocess.PIPEtext/universal_newlines 类型:bool 默认: Flase 作用:是否以字符串形式返回输出(默认返回字节) 执行控制 check 类型:bool 默认:Flase 作用:当返回码非零时抛出CalledProcessErrortimeout 类型:int/float 作用:设置命令超时时间(秒) 异常:触发TimeoutExpiredinput 类型:bytes/str 作用:向子进程的标准输入发送数据 要求:需配合stdin=subprocess.PIEP 环境控制 cwd 类型:str/Path 作用:设置命令执行工作目录 示例:subprocess.run(["git", "status"], cwd="/project/path")env 类型:dict 作用:自定义环境变量 注意:默认继承当前环境,建议使用os.environ.copy() subprocess.Popen(): 核心定位 这是一个更底层的接口,提供了更多的灵活性。你可以使用它来启动一个子进程,并与其进行复杂的交互。subprocess.Popen 是 Python 子进程管理的底层接口,相比 subprocess.run() 提供更细粒度的控制,适用于以下场景: 实时流处理(如逐行读取日志)交互式命令(如自动化 SSH 会话)后台进程管理(如启动守护进程)复杂 I/O 管道(如多进程协作) subprocess.call(): 功能概述 作用:执行命令并等待其完成,返回命令的 退出状态码(0 表示成功,非 0 表示失败)13。 典型场景:简单执行命令且不关心输出内容,只需判断是否成功。 核心参数 核心参数 args 类型/默认值:str 或 list 说明:要执行的命令(推荐列表形式)示例:call(["ls", "-l"]) 或 call("ls -l", shell=True)shell 类型/默认值:bool (False) 说明:是否通过系统 shell 执行(支持管道符等特性,但有安全风险)stdout 类型/默认值:文件描述符 说明:控制标准输出(默认输出到终端,可用 subprocess.DEVNULL 丢弃输出)stderr 类型/默认值:文件描述符 说明:控制标准错误(默认输出到终端) import subprocess # 执行命令并检查状态码 return_code = subprocess.call(["gcc", "main.c"]) if return_code == 0: print("编译成功") else: print("编译失败,错误码:", return_code) subprocess.check_output(): 功能概述 作用:执行命令并 捕获标准输出内容(不捕获错误输出),若命令失败则抛出 CalledProcessError 异常 典型场景:需要获取命令输出内容,且要求命令必须成功执行。核心参数 args 类型/默认值:str 或 list 说明:同 call()shell 类型/默认值:bool (False) 说明:同 call()stdeer 类型/默认值:文件描述符 说明:默认错误输出到终端,可设为 subprocess.STDOUT 合并到 stdoutuniversal_newlines 类型/默认值:bool (False) 说明:返回字符串形式encoding 类型:str 说明:指定输出编码(需配合 text=True 使用) import subprocess try: output = subprocess.check_output( ["python", "script.py"], stderr=subprocess.STDOUT, # 合并错误到输出 text=True # 返回字符串而非字节 ) print("输出结果:", output) except subprocess.CalledProcessError as e: print("执行失败,错误信息:", e.output)pythonsubprocess库由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“pythonsubprocess库”
上一篇
qsort介绍与实现